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'を返しますが、関数での呼び出しは'undefined'を返します。誰かがこれを手伝ってくれませんか?

ありがとうございました

4

2 に答える 2

4

と仮定しましょうarr=texte.split(';')[1].split(',')。クリックが実行されるとき、iはすでにに等しくなりarr.lengthます。arr[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 に答える