0

我有以下代码,它工作正常,直到我点击#play 按钮。我假设这是因为 var intID 设置在另一个地方,并且当我 window.clearInterval() 它时它不在同一个范围内......我该如何解决这个问题?顺便说一句,这是 Google Maps API 版本 3

  function intervalTrigger(){
        return window.setInterval(function(){
            placement++;
            if(placement >= markers.length){placement = 0;}
            google.maps.event.trigger(markers[placement], "click");
        }, 5000);
    };

    var intID = intervalTrigger();

    $('#map_canvas').click(function(){window.clearInterval(intID);});

    $('a[href=#nextmarker]').live('click',function(){
        placement++;
        if(placement >= markers.length){placement = 0};
        google.maps.event.trigger(markers[placement], "click");
        window.clearInterval(intID);
        $('a[href=#pause]').replaceWith('<a href="#play">Play</a>');
        return false;
    });
    $('a[href=#prevmarker]').live('click',function(){
        placement--;
        if(placement == -1){placement = markers.length-1}
        google.maps.event.trigger(markers[placement], "click");
        window.clearInterval(intID);
        $('a[href=#pause]').replaceWith('<a href="#play">Play</a>');
        return false;
    });
    $('a[href=#play]').live('click',function(){
        $('a[href=#play]').replaceWith('<a href="#pause">Pause</a>');
        var intID = intervalTrigger();
        return false;
    });
    $('a[href=#pause]').live('click',function(){
        window.clearInterval(intID);
        $('a[href=#pause]').replaceWith('<a href="#play">Play</a>');
        return false;
    });
4

2 回答 2

3

var从您的#play 点击处理程序中删除以下内容:

$('a[href=#play]').live('click',function(){
    $('a[href=#play]').replaceWith('<a href="#pause">Pause</a>');
    intID = intervalTrigger();
    return false;
});

这将正确设置全局的值,var intID以便其他事件处理程序可以使用它。

于 2010-07-28T22:37:09.613 回答
1

您正在使用该关键字创建一个变量var,如果要在外部范围内引用该变量,则需要将其取出,如下所示:

$('a[href=#play]').live('click',function(){
    $('a[href=#play]').replaceWith('<a href="#pause">Pause</a>');
    intID = intervalTrigger();
    return false;
});

否则,它只是在该.live()处理程序中创建一个不会去任何地方的新变量......但既然你想设置你已经拥有的变量,请不要使用var.

于 2010-07-28T22:36:38.020 回答