SetInterval在某个时间调用一个特定时间间隔的函数后,在javascript中不起作用

时间:2014-07-30 06:13:51

标签: javascript php timer

这是我的html代码,onclick事件调用:

<input type="button" id="btn" value="Submit" onclick="click_function()"/>
<div id="display"></div>

单击按钮时,如果数据来自服务器,则下面的脚本每隔一分钟调用一次该函数,setinterval将停止调用该函数,直到数据在服务器中创建,函数将调用该函数check()函数如果数据存在则会显示数据。

<script>
function click_function() {

    var ajax_load = "<img id='loading' src='loader.gif' alt='loading...' />";
    $("#display").html(ajax_load);

    check_interval();

    function check_interval() {
        var set_inter = setInterval(function(){
            check();
        }, 60000);

    function check(){
        if($("#display").val=="") {
            $("#display").html(ajax_load);
        } else {
            $("#display").html(ajax_load).load("get_test.php",{},function(){});
            clearInterval(set_inter);
        }
    }
</script>

但是当我每1分钟运行一次脚本时,该函数将刷新另一个函数,setinterval不起作用,并在第二分钟后停止整个脚本。

我收到错误消息:

  

显示网页时出错,要继续,重新加载或转到其他页面。

1 个答案:

答案 0 :(得分:0)

像这样重写你的代码:

var set_inter = null;

function click_function(){

    var ajax_load = "<img id='loading' src='loader.gif' alt='loading...' />";
    $("#display").html(ajax_load);

    check_interval();
}

function check_interval(){

    set_inter =  setInterval(function(){
        check();
    }, 60000);
}

function check(){

    if($("#display").val==""){

        $("#display").html(ajax_load);
    }else{

        $("#display").html(ajax_load).load("get_test.php",{},function(){});
        clearInterval(set_inter);
    }
}

首先是范围问题,你需要使变量set_inter global在其他函数中使用。