js中setTimeout函数疑问

遇到一个好奇怪的问题
function RefreshData(time,Ele,url) {
Ele.innerHTML = "将在" + time + "秒后自动跳转";
if (time == 0) {
window.location = url; //url为到时跳转的页面URL
}
}

function Update(secs,Ele,url) {
for (var i = secs; i >= 0; i--) {
var code = “RefreshData(” + i + “,” + Ele + “,” + url + “)";
window.setTimeout(code, (secs - i) * 1000);
}
}

感觉window.setTimeout(code, (secs - i) * 1000);调试了好久一直不通过,以前没写过js代码。

setTimeout的第一个参数是一个函数对象。你把code写成:
var code = function(){ RefreshData(” + i + “,” + Ele + “,” + url + “); };
再试试?

双引号中英文状态不分,而且你搞个for语句是要干嘛?你这样会启动10个计时器了

一个函数就行了

     function Update(secs, Ele, url) {
        var timer = setInterval(function () {
            secs--;
            Ele.innerHTML = "将在" + time + "秒后自动跳转";
            if (secs == 0) {
                clearInterval(timer);
                window.location = url; //url为到时跳转的页面URL
            }
        }, 1000);
    }
 var code = “RefreshData(” + i + “,” + Ele + “,” + url + “)";
window.setTimeout(code, (secs - i) * 1000);
因为ele是dom对象,不能拼接成字符串
改成
var code = RefreshData(i, Ele,url);
   window.setTimeout(function(){code}, (secs - i) * 1000);

code 直接写调用的方法试一试