2013-07-24 62 views
0

这是在超时函数中循环。 nw保持未定义状态,或者在每次新的启动时重新设置为undefined。这是为什么?在Javascript中组装var var

$("#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(); 
}; 
+0

您需要将变量声明放在函数之外,以便它继续存在。 – Barmar

+0

这是一个答案(确实是正确的答案),不仅仅是评论。 – Utkanos

+0

应该不是所有的代码都在'.load'触发的回调函数中吗? – Alnitak

回答

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(); 
}; 

您使用的变量,你宣布它

+3

是OP应该发挥“发现差异”? – Alnitak

+0

对不起...我第一次发布的代码,然后写我做了什么 –

+1

JavaScript变量不局限于if语句。见http://stackoverflow.com/questions/500431/javascript-variable-scope – Knollbert

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(); 
}; 
+0

它不是全球性的 –

1

只需删除此行中的“var”:

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

因此,您将在全局上下文中初始化nw变量。

通过写入变种NW = ...你创建你离开时的回调函数被移除的局部变量。