0

これはタイムアウト関数でループしています。nw は未定義のままか、新しい開始ごとに未定義にリセットされます。何故ですか?

$("#wert"+i).load('variable.html #w'+i);
if(! nw){
alert(nw);
var nw = eval('neuerwert'+i); // Here I set the var nw, so why is it undefined again the next time around?
}
if ($("#w"+i).html() != nw){
wertaenderung('#wert'+i);
nw = $("#w"+i).html();
};
4

3 に答える 3

1

変数nwは正しいスコープ内にある必要があります。

var nw;
$("#wert"+i).load('variable.html #w'+i);
if(! nw){
    alert(nw);
    nw = eval('neuerwert'+i);
}
if ($("#w"+i).html() != nw){
    wertaenderung('#wert'+i);
    nw = $("#w"+i).html();
};

宣言する前に変数を使用した

于 2013-07-24T12:00:54.840 に答える
1

この行の「var」を削除するだけです:

var nw = eval('neuerwert'+i);

したがって、グローバル コンテキストで nw 変数を初期化します。

var nw = ... と書くことで、コールバック関数を離れるときに削除されるローカル変数を作成します。

于 2013-07-24T12:04:01.573 に答える
1

nwロード機能の外に移動してみてください:

var nw;
$("#wert" + i).load('variable.html #w' + i);
if (!nw) {
    alert(nw);
    nw = eval('neuerwert' + i);
}
if ($("#w" + i).html() != nw) {
    wertaenderung('#wert' + i);
    nw = $("#w" + i).html();
};
于 2013-07-24T12:01:57.227 に答える