Javascript Jquery计时器只运行一次?

Javascript Jquery计时器只运行一次?,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我正在处理一些js/jQuery,但遇到了一个问题 有一个计时器,它应该每x秒执行一次函数。然而,问题是计时器似乎只执行一次。我问过一些朋友,但他们也不知道出了什么问题 所以如果有人有线索,请 <script type="text/javascript"> var id = 0; var count = 0; var obj; console.log(id); function getTweetsWithQuery(q) {

我正在处理一些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>

var-id=0;
var计数=0;
var-obj;
console.log(id);
函数getTweetsWithQuery(q){
log('GetWeetswithQuery确实运行了');
$.ajax({
键入:“获取”,
url:“ajax.php”,
数据:“q=”+q,
成功:功能(msg){
obj=jQuery.parseJSON(msg);
start();
}
});
log('gettweetswithqueryfinished');
}
函数更新页面(obj){
var计数=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);
log('UpdateWebets确实运行了');
如果(id==9){
id=0;
}否则{
id++;
}
如果(计数==对象长度){
计数=0;
}否则{
计数++;
}
console.log('下一个id:'+id);
log('下一次计数:'+计数);
}
函数start(){
console.log('启动确实运行')
var timer=$.timer(updateweets(obj));
timer.set({time:500,autostart:true});
}

getTweetsWithQuery()函数从html中调用。

您正在调用该函数,而不是为其分配引用

var timer = $.timer( function(){ updateTweets(obj); } );

您正在调用函数,而不是为其分配引用

var timer = $.timer( function(){ updateTweets(obj); } );

好吧,这并不理想,但我认为这可能有效:

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

   }
从我在插件源代码中看到的情况来看,它似乎在函数对象方面存在问题。我不知道为什么,我也没有足够的技能去理解源代码并弄清楚发生了什么,但是如果你传入一个函数定义的话,它看起来确实有效


这是一把小提琴,展示了你所拥有的以及我是如何让它工作的。

好的,这并不理想,但我认为这可能会起作用:

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

   }
从我在插件源代码中看到的情况来看,它似乎在函数对象方面存在问题。我不知道为什么,我也没有足够的技能去理解源代码并弄清楚发生了什么,但是如果你传入一个函数定义的话,它看起来确实有效


这里有一把小提琴,展示了你拥有的以及我是如何让它工作的。

你有
.timer
插件吗?我认为您不需要它,因为在这种情况下,
setInterval
应该足够了。时间插件也包括在内。正如Rory McCrossan所描述的那样,我也使用了setInterval,但它的结果与计时器插件相同?我很难找到它。你有
.timer
插件吗?我认为您不需要它,因为在这种情况下,
setInterval
应该足够了。时间插件也包括在内。正如Rory McCrossan所描述的那样,我也使用了setInterval,但它的结果与计时器插件相同?我在跟踪它时遇到了问题。使用此答案,函数甚至不会被调用一次使用此答案,函数甚至不会被调用一次