我正在研究一些js / jQuery,但我遇到了一个问题。
有一个定时器应该每隔x秒执行一次功能。然而,问题是计时器似乎只执行一次。我问过一些朋友,但他们也不知道出了什么问题。
所以,如果有人有线索,请!
<script type="text/javascript">
var id = 0;
var count = 0;
var obj;
console.log(id);
function getTweetsWithQuery(q) {
console.log('getTweetsWithQuery did run');
$.ajax({
type: "GET",
url: "ajax.php",
data: "q=" + q,
success: function(msg){
obj = jQuery.parseJSON(msg);
start();
}
});
console.log('getTweetsWithQuery finished');
}
function updateTweets(obj) {
var count = 0;
$('#tweet' + id).animate({opacity: 0}, 1).delay(500);
$('#tweet' + id).text(obj[count].text);
$('#tweet' + id).delay(500).animate({opacity: 1}, 500);
console.log(obj[count].text);
console.log('updateTweets did run');
if(id == 9){
id = 0;
}else {
id++;
}
if(count == obj.length){
count = 0;
}else {
count++;
}
console.log('Next id: ' + id);
console.log('Next count: ' + count);
}
function start() {
console.log('start did run')
var timer = $.timer( updateTweets(obj) );
timer.set( { time : 500, autostart : true } );
}
</script>
从html中调用getTweetsWithQuery()函数。
答案 0 :(得分:4)
您正在调用该函数,而不是为其分配引用。
var timer = $.timer( function(){ updateTweets(obj); } );
答案 1 :(得分:0)
好吧这不理想,但我认为这可行:
function start() {
console.log('start did run')
var timer = $.timer( function(){
ar count = 0;
$('#tweet' + id).animate({opacity: 0}, 1).delay(500);
$('#tweet' + id).text(obj[count].text);
$('#tweet' + id).delay(500).animate({opacity: 1}, 500);
console.log(obj[count].text);
console.log('updateTweets did run');
if(id == 9){
id = 0;
}else {
id++;
}
if(count == obj.length){
count = 0;
}else {
count++;
}
console.log('Next id: ' + id);
console.log('Next count: ' + count);
});
timer.set( { time : 500, autostart : true } );
}
从我在该插件的源代码中看到的,它似乎与函数对象有问题。我不确定为什么,而且我没有足够的技能来消化源并弄清楚发生了什么,但是如果传入函数定义它似乎确实有效。
这里有一个小提示,显示你有什么以及我是如何让它工作的。