Javascript 延迟事件侦听器
在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
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)
});
您正在超时内调用函数,因此它无法工作。