【发布时间】:2018-01-11 23:08:35
【问题描述】:
我有一个大型代码,在我的 HTML 中的各种对象上有多个事件侦听器,它们都是“点击”侦听器。现在我意识到我想要所有这些对象上的另一个事件监听器。除了点击侦听器之外,我还想要 mouseenter 侦听器。我已经把它全部写出来了,但我认为应该有一种更简单的方法来做到这一点。 这可能有点模糊,但这基本上是我现在所拥有的:
object1.addEventListener("click", function(){
if(condition1){
function1();
}
});
object2.addEventListener("click", function(){
if(condition2){
function2();
}
});
etcetera etcetera
我想保留这些功能,并使用“mouseenter”侦听器创建新功能。如果每个对象都满足尊重的条件,这些新功能都会做同样的事情。所以我想要这个:
object1.addEventListener("click", function(){
if(condition1){
function1();
}
});
object1.addEventListener("mouseenter", function(){
if(condition1){
myAnimation();
}
});
object2.addEventListener("click", function(){
if(condition2){
function2();
}
});
object2.addEventListener("mouseenter", function(){
if(condition2){
myAnimation();
}
});
etcetera etcetera
就像我说的,我可以编写所有代码,但有超过 100 个函数。如果 Javascript 有办法用函数生成它,那就太棒了。
编辑:
我正在做的是构建故事情节(在带有 Aframe 的 VR 中)。您可以点击很多元素,但只有在故事允许的情况下,才能解释听众的状况。我现在想要做的(我意识到为时已晚)是一个带有光标的动画,只要光标悬停在正确单击的元素上,因此用户无需单击所有元素就知道要单击什么在房间里。因此,所有“mouseenter”侦听器都需要与同一元素的“click”侦听器相同的特定条件。听起来仍然很模糊,但我不知道如何进一步解释。
【问题讨论】:
-
arrayOfObjects.forEach(o => o.addEventListener('mouseenter', function () ... ))– 每当你对多件事情做同样的事情时,你可能需要某种形式的循环。
标签: javascript