Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 延迟事件侦听器_Javascript_This_Settimeout_Addeventlistener - Fatal编程技术网

Javascript 延迟事件侦听器

Javascript 延迟事件侦听器,javascript,this,settimeout,addeventlistener,Javascript,This,Settimeout,Addeventlistener,在JavaScript中,我有一个元素(一个输入标记) 此代码: element.addEventListener("focus", function () { this.parentNode.parentNode.style.outline = this.parentNode.parentNode.dataset.ans_outline; }); 当输入被聚焦时,大纲立即改变 我的问题是:我怎样才能推迟这一事件 我试过: element.addEventListener("focus

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

此代码:

element.addEventListener("focus", function () {
    this.parentNode.parentNode.style.outline = this.parentNode.parentNode.dataset.ans_outline;
});
当输入被聚焦时,大纲立即改变

我的问题是:我怎样才能推迟这一事件

我试过:

element.addEventListener("focus", function () {
    setTimeout(function(node) {
        node.parentNode.parentNode.style.outline = node.parentNode.parentNode.dataset.ans_outline;
    }(this), 1000)
});
。。但它不起作用:(

试试这个:

element.addEventListener("focus", function () {
    var node = this;
    setTimeout(function() {
        node.parentNode.parentNode.style.outline = node.parentNode.parentNode.dataset.ans_outline;
    }, 1000)
});
函数的第一个参数是要执行的函数(不要直接调用此函数)


您可以将对
的引用存储在
节点
变量中,然后在超时函数中使用它(请参见)

删除对
的引用,并采用以下方式:

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

您正在超时内调用函数,因此它无法工作。