延迟事件监听器

Jer*_*rry 5 javascript this addeventlistener settimeout

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

这段代码:

element.addEventListener("focus", function () {
    this.parentNode.parentNode.style.outline = this.parentNode.parentNode.dataset.ans_outline;
});
Run Code Online (Sandbox Code Playgroud)

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

我的问题是:我怎样才能推迟这个活动?

我试过了 :

element.addEventListener("focus", function () {
    setTimeout(function(node) {
        node.parentNode.parentNode.style.outline = node.parentNode.parentNode.dataset.ans_outline;
    }(this), 1000)
});
Run Code Online (Sandbox Code Playgroud)

..但这不起作用:(

mad*_*ox2 5

尝试这个:

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

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

您可以存储对thisinnode变量的引用,然后在超时函数中使用它(请参阅闭包)