在javascript中获取未定义的字符串约束错误

时间:2011-06-22 12:29:39

标签: javascript html javascript-events innerhtml

我想传递一个javascript变量作为一个函数的参数,该函数在一个复选框的onclick事件上调用。并在innerHTML中创建复选框。 代码段是 -

function populateValue(Result) {
    var valueSet = new Array();
    valueSet = Result.split("##");
    for (i = 1; i < valueSet.length - 3; i++) {
        var tr = document.createElement("tr");
        var td = document.createElement("td");
        tr.setAttribute("align", "left");
        tr.className = "table_ce11";
        td.setAttribute("align", "center");
        var code = String(valueSet[i - 1]);
        td.innerHTML = "<input type='checkbox' name='pCheckBox' value='111' id ='" + code + "' onClick=\"javascript:decide('" + code + "')\">";

        tr.appendChild(td);
    }
}

function decide(code) {
    alert("here");
    alert(document.getElementById(code).value);
    if (document.getElementById(code).checked) alert("chked");
    else alert("unchked");
}

在运行它时,既不能设置id也不能传递函数decision()的参数。我得到错误“未确定的字符串约束”。但如果我硬编码值,函数运行正常。 对此有何建议?

1 个答案:

答案 0 :(得分:0)

仅限初学者

Split会创建一个数组。

var valueSet = Result.split("##");

您需要测试数组中是否至少有4个项目

if (valueSet.length <= 3) return 
for (var i = 1; i < valueSet.length - 3; i++) {
无论如何,

无需在字符串连接字符串时创建字符串

var code = valueSet[i - 1];

无需使用 javascript:前缀,并且在与ID相同时无需传递代码:

td.innerHTML = '<input type="checkbox" name="pCheckBox" value="111" id ="' + code + '" onClick="decide(this.id)">';

还会保留默认对齐,并在单元格上对齐中心,以便摆脱

// tr.setAttribute("align", "left");

你可以发布更多的代码并准确地告诉出错的地方吗?