javascript - 在 Javascript 中出现未定义的字符串约束错误

标签 javascript html dom-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,也无法传递函数 decide() 的参数。我收到错误:

"undetermined string constraint".

但是如果我对这些值进行硬编码,该函数就可以正常运行。 对此有何建议?

最佳答案

仅供初学者使用

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");

您可以发布更多代码并准确说明哪里出了问题吗?

关于javascript - 在 Javascript 中出现未定义的字符串约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6439837/

相关文章:

javascript - 如何获取单击按钮的标题属性?

javascript - Google Fastbutton 不适用于移动 Safari?

javascript - 单击按钮并在 jquery 中检测其状态

javascript - 声明可以以这种方式分配的对象

javascript - 无法解析从 Node.js 和 MySQL 生成的 JSON

<body> 中的 JavaScript

javascript - 在 Javascript 中显示全部 ().html

JavaScript 中断事件

javascript - Javascript 中的快速排序 Bug

html - 将不同大小的图像放入同一类的 div 中,div 的数量等于图像总数