2014-04-08 47 views
0

好吧,原諒我的冗長標題。我的代碼片段將位於頁面的底部。Javascript函數TypeError但只在子字符串()字符串

我創建了一個JavaScript程序,它將數據透視表的行和列更改爲預定義的值。最初,我通過使用$(".Dropdown").val(value).trigger("change");這樣做,只要我沒有使用我的JavaScript插入值的工作良好。

IE <onclick="presetFunction('count', 'Heatmap', ['ClassNum'], ['Grade'])">鍵入到頁面正常工作。但是,使用JavaScript將上面的代碼放到頁面上不會。

當我看着控制檯,我得到這個錯誤:「TypeError:opts.aggregators [aggregator.val(...)]不是一個函數」,我檢查了我的類型(如果我的字符串解析改變了類型),那不是問題。我檢查了值,這也不是問題。

這裏是我使用的代碼snippits:

元我附加的onclick到:

<li id="one" class="Barchart"> 
    <a href="#one">Barchart<span>5</span></a> 
    <ul id="bchart" class="sub-menu"> 
    </ul> 
</li> 

的Javascript移動周圍的事物:

function presetFunction(Agg, Rend, Col, Row) { 
    $(".pvtRenderer").val(Rend).trigger("change"); 
    $(".pvtAggregator").val(Agg).trigger("change"); 
    $(".label.label-info").each(function (index, element) { 
     test = $(element).html(); 
     test = test.substring(6, test.length - 42); 
     if ((Col.indexOf(test)) != -1) 
      $(".pvtAxisContainer.pvtRows.ui-sortable").append(element); 
     else if (Row.indexOf(test) != -1) 
      $(".pvtAxisContainer.pvtHorizList.pvtCols.ui-sortable").append(element); 
     else 
      $(".pvtAxisContainer.pvtUnused.pvtHorizList.ui-sortable").append(element); 
     $(element).triggerHandler(""); 
    }); 
} 

給人一種字符串在這裏測試:

function loadPresets() { 
    var presets = "\'count\', \'Bar Chart\', [\'ProfLastName\'], [\'Grade\']"; 
    var sep = presets.indexOf(","); 
    var style = presets.substr(0, sep).trim(); 

    presets = presets.substr(sep + 1, presets.length).trim(); 
    sep = presets.indexOf(","); 

    var type = presets.substr(0, sep).trim(); 
    presets = presets.substr(sep + 1, presets.length).trim(); 
    sep = presets.indexOf("]"); 

    var row = presets.substr(0, sep + 1); 
    presets = presets.substr(sep + 2, presets.length); 

    var col = presets.trim(); 
    var link = '<li><a href=\"#\" id=\"b01\"><em>01</em>Teacher vs. Grade</a></li>'; 

    $("#bchart").append(link); 
    $("#b01").click(function() { 
     presetFunction(style, type, row, col); 
    }); 
} 

任何幫助將不勝感激。 CF

+0

值分配給*預設*然後分裂它分配給其他變量似乎是一個過於複雜的方式來做到這一點。 – RobG

+0

我這樣做只是爲了測試功能。我實際上使用PHP來拉取這種格式的字符串。我想我應該顯示字符串看起來像什麼。 – Jesusfreaks95

回答

0

問題是你在變量裏面有單引號。擺脫他們。

你的onclick看起來像這樣

presetFunction("'style'", "'type'", "'row'", "'col'");