调用变量不起作用

时间:2014-10-06 09:33:40

标签: jquery variables counter setinterval

尝试制作一个小型计数应用,你可以在这里看到它:

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。

有什么想法吗?

1 个答案:

答案 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);
});