运行 特定 DOM 元素的 setTimeout()
Running setTimeout() for a Specific DOM Element
我有以下代码,问题在于,如果您在 setTimeout()[=19 之前右键单击并 select 'Copy' 页面上的其他元素=]结束,之前点击的元素不会改变它的样式,因为全局变量被赋予了新的元素值。
如何修改它以便 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)
})
您应该简单地维护一份对哪个节点的引用的副本。
也许在做:
contextMenu.append(new gui.MenuItem({
label: 'Copy',
click: function() {
var nodeCopy = whichNode;
nodeCopy.style.color = '#40c4ff'
setTimeout(function(){ nodeCopy.style.color = 'inherit' }, 1000)
}
}))
够了。
我有以下代码,问题在于,如果您在 setTimeout()[=19 之前右键单击并 select 'Copy' 页面上的其他元素=]结束,之前点击的元素不会改变它的样式,因为全局变量被赋予了新的元素值。
如何修改它以便 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)
})
您应该简单地维护一份对哪个节点的引用的副本。 也许在做:
contextMenu.append(new gui.MenuItem({
label: 'Copy',
click: function() {
var nodeCopy = whichNode;
nodeCopy.style.color = '#40c4ff'
setTimeout(function(){ nodeCopy.style.color = 'inherit' }, 1000)
}
}))
够了。