在JavaScript中,我有一个元素(它是一个输入标记)。
此代码:
printlistleafs
当输入被聚焦时,轮廓会立即改变。
我的问题是:我怎么能推迟这个事件?
我试过了:
element.addEventListener("focus", function () {
this.parentNode.parentNode.style.outline = this.parentNode.parentNode.dataset.ans_outline;
});
..但它不起作用:(
答案 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)