2014-10-06 47 views
0

試圖讓小計數的應用程序,你可以在這裏看到:調用變量未工作

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

基本上每一秒,即。每個函數應該在.counter添加的數x ,從0開始。例如,第一個數字應該爲10,然後爲20,然後爲30等。

var counter在.counter,var中取出字符串counternumber以parseInt取實際數字,var x取第一個var x其等於0,然後將該次數添加到它。然後放入.output。這一切都發生在每秒。

問題是這樣的,當var x是.each函數中的局部變量時,它將x看作每秒0,所以輸出相同的數字。當它是一個全局變量之外,它返回爲NaN。我想要的是它第一次看到x爲0,添加counternumber,然後在下一秒使用新的x。

任何想法?

+1

請告訴我們一些代碼 – mithunsatheesh 2014-10-06 09:35:18

+0

可能的代碼和你在一起...... – Syd 2014-10-06 09:35:27

+0

爲了將數據存儲在全局上下文中(例如,它持久存在單個函數調用)考慮將其放置在全局範圍=>全局變量中;在使用之前聲明它。 – fast 2014-10-06 09:38:44

回答

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