javascript - 为特定 DOM 元素运行 setTimeout()

标签 javascript node.js webkit settimeout

我有以下代码,问题是,如果在 setTimeout() 结束之前在页面上的其他元素上右键单击并选择“复制”,则先前单击的元素将不会更改其样式,因为全局变量被分配了新的元素值。

如何修改它,以便 setTimeout() 完成被调用元素的任务?

var whichNode;
var contextMenu = new gui.Menu()

contextMenu.append(new gui.MenuItem({
    label: 'Copy',
    click: function() {
        whichNode.style.color = '#40c4ff'
        setTimeout(function(){ whichNode.style.color = 'inherit' }, 1000)
    }
}))

document.addEventListener('contextmenu', function(e) {
    e.preventDefault;
    whichNode = e.srcElement;
    contextMenu.popup(e.x, e.y)
})

最佳答案

您应该简单地维护对 whichNode 的引用的副本。 也许做:

contextMenu.append(new gui.MenuItem({
label: 'Copy',
click: function() {
  var nodeCopy = whichNode;
  nodeCopy.style.color = '#40c4ff'
  setTimeout(function(){ nodeCopy.style.color = 'inherit' }, 1000)
}
}))

够了。

关于javascript - 为特定 DOM 元素运行 setTimeout(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27944113/

相关文章:

node.js - Heroku 和 multer

iPhone + CSS3 多列 + 溢出 : Scroll = Bug?

javascript - Webkit重画问题: transform scale + position changing

javascript - onclick 添加图片到div

javascript - 使用 selenium 和 beautifulsoup 从 AJAX 网站上使用 python 抓取图像

javascript - 如何在 Node/Javascript 中丢弃数字的小数部分

html - webkit 中 css3 多列图像错误的解决方法?

javascript - TinyMCE 文本区域无法编辑

javascript - 使用对象与原始值作为函数参数时内存使用的差异

javascript - Node.js 中 ES5 过滤器的奇怪行为