1

我正在研究一些 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() 函数。

4

2 回答 2

4

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

var timer = $.timer( function(){ updateTweets(obj); } );
于 2012-12-05T15:02:43.750 回答
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 } );

   }

从我在该插件的源代码中看到的,它似乎有函数对象的问题。我不知道为什么,我也不够熟练来消化源代码并弄清楚发生了什么,但如果你传入一个函数定义,它似乎确实有效。

这是一个小提琴,展示了您拥有的东西以及我如何让它发挥作用。

于 2012-12-05T15:14:51.553 回答