尝试制作一个小型计数应用,你可以在这里看到它:
http://codepen.io/rossdw/pen/ioHvq
$(document).ready(function(){
setInterval(function(){
x = 0;
$('.post').each(function(){
var counter = $(this).find('.counter').html();
var counternumber = parseInt(counter);
var x = x+counternumber;
console.log(x);
$(this).children('.output').html(x);
});
},1000);
});
基本上每秒,.each函数应该将.counter中的数字添加到x,从0开始。例如,第一个数字应该是10然后是20然后是30等。
var counter接受.counter中的字符串,var counternumber使用parseInt获取实际数字,var x取第一个等于0的var x,然后将该反向数字添加到它。然后将它放在.output中。这种情况每秒都会发生。
问题在于,当var x是.each函数中的局部变量时,它会每秒看到x为0,因此输出相同的数字。当它是一个超出此范围的全局变量时,它将返回NaN。我想要的是它第一次看到x为0,添加counternumber,然后在下一秒使用新的x。
有什么想法吗?
答案 0 :(得分:0)
您需要在要定义的范围内声明您的变量,即覆盖您的计时器更新:
$(document).ready(function(){
var x = 0;
setInterval(function(){
$('.post').each(function(){
var counter = $(this).find('.counter').text();
var counternumber = parseInt(counter);
x += counternumber;
console.log(x);
$(this).children('.output').text(x);
});
},1000);
});