有没有办法在事件监听器的“类型”上设置条件或在程序运行时更改它?

问题描述 投票:0回答:1

我正在做 Odin 的 Project Etch-a-Sketch javascript 项目。我决定尝试实现一个单独的功能 - 如果单击按钮,您将能够悬停绘图。如果您决定不单击按钮,则软件的默认操作是能够在单击时进行绘制。但是,我在实现这一点时遇到了困难。

我找不到任何关于此的信息,到目前为止我只尝试了一个不起作用的 if 循环(它立即开始通过悬停绘制)

hover_toggle.addEventListener("click", function() {
  if (hover = false) {
    hover = true
    hover.classList.add("hover_on")
  } else {
    hover = false
    hover.classList.remove("hover_on")
  }
})
if (hover = true) {
  square.forEach(square => square.addEventListener("mouseover", drawingFunction))
} else {
  square.forEach(square => square.addEventListener("click", drawingFunction))
javascript event-listener
1个回答
0
投票

将条件检查放在事件监听器中,而不是在添加它们时。

square.forEach(square => {
    square.addEventListener("mouseover", e => hover && drawingFunction(e));
    square.addEventListener("click", e => hover || drawingFunction(e))
});
© www.soinside.com 2019 - 2024. All rights reserved.