Javascript函数TypeError但仅限于substring()字符串

时间:2014-04-08 00:30:35

标签: javascript jquery

好的,请原谅我冗长的头衔。我的代码片段将位于页面底部。

我创建了一个javascript程序,可以将数据透视表的行和列更改为预定义的值。最初我使用$(".Dropdown").val(value).trigger("change");做了这个,只要我没有使用我的javascript来插入值就行。{/ p> 输入页面的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

1 个答案:

答案 0 :(得分:0)

问题在于你在变量中有单引号。摆脱它们。

你的onclick看起来像这样

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