我做了一个计时器,显示了我新创建的窗口。
但是,它每次都重复文本,因为我写了一个新行。
我想在我的窗口中创建一个div元素,这样我就可以每秒替换(更新)文本。
对象:
venster = window.open('new.html','titel','width=500, height= 500');
我的计时器:
function stopwatch(sec){
//timer
venster.document.write("window closes in: " + sec);
if(sec < 1){
clearTimeout(timer);
venster.document.write("<h1>i will close!</h1>");
//setTimeout(venster.close(),2000);
}
sec--;
var timer = setTimeout('stopwatch('+sec+')',1000);
}
我希望文本“窗口关闭..”仅显示一次,而不是每秒显示此文本的新行。
答案 0 :(得分:2)
您错过了else
条款。如果您想要替换整个内容,那么innerHTML
就是您追求的目标。 document.write
永远只会添加。
function stopwatch(sec){
if(sec < 1){
venster.document.body.innerHTML = "<h1>i will close!</h1>"; // Also this h1 wasn't closed
setTimeout(venster.close ,1000); // And this was executed immediately rather than passing on a function
} else {
venster.document.body.innerHTML = "window closes in: " + sec;
setTimeout(function() { stopwatch(sec-1) }, 1000); // And this would look prettier wrapped in an anonymous function
}
}
答案 1 :(得分:0)
问题是变量timer
只存在于函数范围内。当你想要清除计时器时它没有任何价值。
在函数外部定义变量timer
。