2014-04-08 116 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'");