ajax回调函数,success中执行settimeout报错

JS代码

<script>
var i = 10;
var intervalid;
intervalid = setInterval('fun()', 1000);
function fun() {
    i--;
    if (i === 0) {
        // window.location.href = 'train_order.php'; //跳转到提示信息页面
        clearInterval(intervalid);
    }
    $(".lv-ticketBookLoading span").text("" + i + "");//显示倒计秒数。
}
</script>

HTML代码

<div id="errorfrm">
    <h3>出错啦~~~</h3>
<div id="error">
    <p>系统出错,请联系管理员!</p>
    <p class="lv-ticketBookLoading">将在 <span id="mes">10</span> 秒钟后返回首页!</p>
</div>

这段代码是可以正常执行。
但是我把JS代码块放在 ajax的success回调执行时,就报错了。我就郁闷了。没找实际问题在哪

 success: function (result) {
      var i = 10;
    var intervalid;
    intervalid = setInterval('fun()', 1000);
    function fun() {
        i--;
        if (i === 0) {
            // window.location.href = 'train_order.php'; //跳转到提示信息页面
            clearInterval(intervalid);
        }
        $(".lv-ticketBookLoading span").text("" + i + "");//显示倒计秒数。
    }
 }


clipboard.png
fun 函数找不到 怪了。。。

阅读 1.8k
1 个回答
intervalid = setInterval(fun, 1000);

这样就行了,因为你传字符串的时候,是在全局作用域里执行的,全局作用域里没有 fun ,就报错了;详情戳这

定时器里的回调,不要传字符串,再强调一遍,字符传回调是历史用法;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题