无法停止setInterval

时间:2014-05-30 14:18:28

标签: javascript jquery html

我有一个使用setInterval的函数,但是在运行一次后我无法停止set setInterval,并且不知道为什么。

这是我的代码:

<script type="text/javascript" src="../front-end/js/jquery.min.js"></script>
<script type="text/javascript">
    var jQuery1 = $.noConflict(true);
</script>
<script type="text/javascript" src="../front-end/js/jquery.gvChart-0.1.min.js"></script>
<script type="text/javascript">
    var time = 0;
    gvChartInit();

    function coisa(){
        time = setInterval(function() {
            jQuery1(document).ready(function(){
                jQuery('#chartdiv').gvChart({
                    chartType: 'PieChart',
                    gvSettings: {
                        vAxis: { title: 'No of Visitors' },
                        hAxis: { title: 'Month' },
                        width: 720,
                        height: 300
                    }
                });
            });
        }, 1000);
    }
</script>
<script type="text/javascript">
    $(document).ready(function(){
        $("#jogador").hide()
        $("#selecoes").hide();
        $("#jogoss").hide();
        $("#selecaoList").click(function () {
            $("#index").hide();
            $("#selecoes").show();
            coiso();
            coisa();
            clearInterval(time);
        });

        $("#tagList").click(function () {
            $("#index").hide();
            $("#selecoes").show();
            coiso();
            coisa();
            clearInterval(time);
        });

当我运行这个时,每隔一次打印就是一个新图表,但我希望它只打印一次图表。

3 个答案:

答案 0 :(得分:0)

setInterval()在循环中经过指定的时间后反复调用该函数,但setTimeout()只会调用该函数一次,因此您需要使用setTimeout()代替{ {1}}

的setInterval()

  

setInterval()方法以指定的时间间隔(以毫秒为单位)调用函数或计算表达式。   setInterval()方法将继续调用函数,直到调用clearInterval()或窗口关闭。

的setTimeout()

  

setTimeout()方法在指定的毫秒数后调用函数或计算表达式。   该函数只执行一次。

答案 1 :(得分:0)

您可能想要使用的是setTimeout()而不是setInterval()setTimeout()只会执行一次,因此您不需要在第二次执行之前依赖清除它,这听起来像是您的问题。

setTimeout(function(){alert('your code here')},1000);

答案 2 :(得分:0)

您是否尝试使用clearInterval(window.time);而不是clearInterval(time);之类的clearInterval?

可能那里没有识别出时间变量。此外,在定义变量时,请将其定义为:window.time = setInterval(function() {....

同时检查变量是否已定义console.log(typeof time)