我的JavaScript全局变量似乎不起作用,给出NaN
作为响应而不是期望的效果。
我正在尝试做的是使“ var value = 0”从0开始,并且每0.5秒将其加1,希望您可以在这里看到我所做的事情。
var value = 0;
setInterval(move,500);
function move() {
var value = value+1
console.log(value);
$(".html5").attr("value",value);
}
答案 0 :(得分:2)
删除功能中的变量重新减速。您可以使用这个。
var value = 0;
setInterval(move,500);
function move() {
value = value+1
console.log(value);
$(".html5").attr("value",value);
}
答案 1 :(得分:1)
您之所以得到NaN
,是因为
var value = value+1
的评估为
var value;
value = undefined + 1;
value = NaN;
要解决此问题,请停止在函数内再次声明value
:
var value = 0;
setInterval(move,500);
function move() {
value = value+1
console.log(value);
$(".html5").attr("value",value);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="html5"/>
答案 2 :(得分:0)
摆脱var
中的function
,它在function scope
中创建另一个变量,该语句将按以下方式解释;
var value;
value = value + 1;
由于value
为undefined
,因此undefined + 1
的值为NaN
var value = 0;
setInterval(move,500);
function move() {
value = value+1
console.log(value);
//$(".html5").attr("value",value);
}
答案 3 :(得分:0)
var value = value+1
中的行move
声明了一个名为value
的新变量,value+1
引用了该变量。删除var
,它将使用全局值:
var value = 0;
setInterval(move,500);
function move() {
value = value+1
console.log(value);
$(".html5").attr("value",value);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="html5">