2012-11-22 35 views
3

我不明白。
我不能增加鳴叫-ID ...Jquery/Javascript - 不能遞增數字(tweet-id)

這裏是一個演示:http://jsbin.com/idupoq/1/edit

glb = {}; 
glb.lastTweetId = 0; 

getTweets(); 

function getTweets() 
{ 
    console.info('# LAST ID'); 
    console.log(glb.lastTweetId); 

    console.info('# TEST 1'); 
    glb.lastTweetId++; 
    console.log(glb.lastTweetId); 

    console.info('# TEST 2'); 
    glb.lastTweetId = glb.lastTweetId+1; 
    console.log(glb.lastTweetId); 

    console.info('# TEST 3, OK IS INT BUT PARSE AGAIN '); 
    glb.lastTweetId = parseInt(glb.lastTweetId); 
    glb.lastTweetId++; 
    console.log(glb.lastTweetId); 

    $.getJSON('http://search.twitter.com/search.json?q=%23wwm&since_id='+glb.lastTweetId+'&include_entities=true&result_type=mixed&lang=de&callback=?', function(data, textStatus) 
    { 
     if(data.results.length > 0) 
     { 
      glb.lastTweetId = data.results[0]['id']; 
     } 
     glb.tm= setTimeout('getTweets();',5000); 
    }); 
} 

提前感謝!

+0

如果你刪除'console.info'行,jsbin的作品,使用'console.log'而不是 – Vithozor

+0

當然? http://jsbin.com/idupoq/4/edit ...你必須等5秒;) – user1815934

+1

'271567725082578940'超過整數範圍 [看這裏](http://jsfiddle.net/jashwant/HqpVc /) – Jashwant

回答

1

正如其他人已經說過,那是因爲數量無法表達271567725082578941。如果所有你想要做的這個數字是一個增加它,那麼下面的功能應該是你所需要的:

function stringInc(v){ 
    var digits = v.toString().split(''); 
    var i = digits.length-1; 
    while (digits[i]==9 && i>0){  
     digits[i] = 0; 
     i--; 
    } 
    digits[i] = 1+parseInt(digits[i]); 
    return digits.join(''); 
} 

如果您希望在想要做更多的東西與數量,那麼你可能會使用VisioN建議的BigNumber庫更好。

無論使用哪種方式,您都應該注意,您無法讀取data.results[0]['id']中的推文ID,因爲它會被解釋爲數字並四捨五入爲271567725082578940。您需要使用data.results[0]['id_str']

查看更新jsbin here:http://jsbin.com/idupoq/19/。注意控制檯從服務器日誌記錄結果:

... 

"geo":null, 
"id":  271580395022217200, 
"id_str":"271580395022217216", 
"iso_language_code":"de" 

... 

所以,你一直在觀察值271567725082578940是不正確也是如此。

1

髒但短期
http://jsbin.com/idupoq/18/edit

glb.lastTweetId = ''+data.results[0]['id']+''; 
    var lastTwoDig = parseInt(glb.lastTweetId.substr(glb.lastTweetId.length-2)); 
    var startDigit = glb.lastTweetId.substring(0, glb.lastTweetId.length-2); 
    lastTwoDig++; 
    if(lastTwoDig==01){ lastTwoDig = '01'; } 
    console.log(glb.lastTweetId); 
    console.log(' '+startDigit+''+lastTwoDig+' ');  
+0

Tooooooo dirty ... – VisioN

+1

如果最後的數字是'... 99'會怎麼樣?我想,例如那麼'123499'將變成'1234100'。 – Supr