在新创建的窗口中创建一个div

时间:2015-06-21 21:36:27

标签: javascript object

我做了一个计时器,显示了我新创建的窗口。

但是,它每次都重复文本,因为我写了一个新行。

我想在我的窗口中创建一个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);
    }

我希望文本“窗口关闭..”仅显示一次,而不是每秒显示此文本的新行。

2 个答案:

答案 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