延迟eventListener

时间:2015-12-10 13:12:27

标签: javascript this settimeout addeventlistener

在JavaScript中,我有一个元素(它是一个输入标记)。

此代码:

printlistleafs

当输入被聚焦时,轮廓会立即改变。

我的问题是:我怎么能推迟这个事件?

我试过了:

element.addEventListener("focus", function () {
    this.parentNode.parentNode.style.outline = this.parentNode.parentNode.dataset.ans_outline;
});

..但它不起作用:(

2 个答案:

答案 0 :(得分:2)

删除this的引用,并按照这样的方式:

element.addEventListener("focus", function () {
    $this = this;
    setTimeout(function() {
        $this.parentNode.parentNode.style.outline = $this.parentNode.parentNode.dataset.ans_outline;
    }, 1000)
});

答案 1 :(得分:1)

试试这个:

element.addEventListener("focus", function () {
    var node = this;
    setTimeout(function() {
        node.parentNode.parentNode.style.outline = node.parentNode.parentNode.dataset.ans_outline;
    }, 1000)
});

setTimeout函数的第一个参数是你想要执行的函数(不要直接调用这个函数)。

您可以在this变量中存储对node的引用,然后在您的超时功能中使用它(请参阅closures