遇到一个好奇怪的问题
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 直接写调用的方法试一试