JavaScript范围:定时器引用任意新对象

时间:2012-05-21 18:36:28

标签: javascript scope

以下是我基本上要尝试做的代码:

document.body.addEventListener("keypress", f1, false);

function f1(e){
    var span = document.createElement("span");
    window.setInterval(function(){
        ...
            window.clearInterval(this);
            document.body.removeChild(span);
}

简而言之,我正在尝试创建一个新的DOM元素,然后为它附加一个能够引用该特定对象的计时器。问题是,我不知道如何处理上下文,因此this仅引用window,当我尝试引用span时,JavaScript会引发错误(我不是期待无论如何工作)。如何设置我在该函数中创建的DOM元素的区间上下文?

2 个答案:

答案 0 :(得分:5)

setInterval返回一个整数,它是计时器的id。所以,你所要做的就是存储它:

var interval = setInterval(function(){
// ...
    clearInterval(interval);

答案 1 :(得分:3)

为您的间隔保留一个变量:

document.body.addEventListener("keypress", f1, false);

function f1(e){
    var span = document.createElement("span");
    var myInterval = setInterval(function(){
        ...
            clearInterval(myInterval);
            document.body.removeChild(span);
}