0

我有这部分代码:

for (i = 0; i <= texte.split(';')[1].split(',').length - 1; i++) {
        cell = document.createElement("td");
        cell.setAttribute("width", "10%");
        cell.setAttribute("align", "center");
        if (texte.split(';')[1].split(",")[i] != "")
            cell.onclick = function () { chgnom('1',"'" + texte.split(';')[1].split(",")[i] + "'",''); };
        textnode = document.createElement("span");
        textnode.innerHTML = texte.split(';')[1].split(",")[i];
        cell.appendChild(textnode);
        row.appendChild(cell);
    }

对innerHTML的调用texte.split(';')[1].split(",")[i]返回“HELLO”,但函数中的调用返回“未定义”。有人可以帮我解决这个问题吗?

谢谢

4

2 回答 2

4

让我们假设arr=texte.split(';')[1].split(',')。当您的点击将被执行时,i将已经等于arr.lengtharr[arr.length]undefined,这就是你得到的。解决方法可能类似于:

if (texte.split(';')[1].split(",")[i] != ""){
    cell.onclick = (function(inner_i){
        return function () { 
            chgnom('1',"'" + texte.split(';')[1].split(",")[inner_i] + "'",''); 
        };
    })(i);
}
于 2012-07-17T12:48:32.287 回答
0

你有没有texte.split(';')[1].split(",")[i]为每个循环测试你的?试着把它放在变量之前。

于 2012-07-17T12:49:27.440 回答