我不明白。
我无法增加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 :(得分:7)
答案 1 :(得分: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+' ');
答案 2 :(得分:1)
正如其他人已经说过的那样,是因为Number无法表达271567725082578941
。如果你想对这个数字做的只是将它增加1,那么你应该只需要以下函数:
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:http://jsbin.com/idupoq/19/。请注意,控制台正在记录服务器的结果:
...
"geo":null,
"id": 271580395022217200,
"id_str":"271580395022217216",
"iso_language_code":"de"
...
因此您观察到的值271567725082578940
也不正确。