javascript 通过单击从div中删除一个样式而不是整个样式

mklgxw1f  于 2022-12-28  发布在  Java
关注(0)|答案(4)|浏览(149)

我有一个像这样的画布div

`<div id="canvas" style="pointer-events:none;">`

我有一个按钮,按下它可以删除样式
x一个一个一个一个x一个一个二个x
有没有一种简单的方法可以将指针事件从无更改为空,而不是删除样式???我找不到其他方法。我尝试使用disabled = disabled,是的,我知道要将onclick更改为事件侦听器。

ha5z0ras

ha5z0ras1#

找到元素后,访问该元素的style属性,然后根据需要对其进行修改:

function qqq() {
    document.getElementById("canvas").style.pointerEvents = null;
    alert("I was ran");
    
}
b0zn9rqh

b0zn9rqh2#

最好的方法是将remove or toggle(取决于您的具体情况)简化为一个定制的实用程序类,如no-pointer

const togglePointerEvents = () => {
  document.querySelector("#canvas").classList.toggle("no-pointer");
};

document.querySelector("#togglePointerEvents").addEventListener("click", togglePointerEvents);
.no-pointer {
  pointer-events: none;
  background: red;
}
<div id="canvas" class="no-pointer">Some DIV element</div>
<button id="togglePointerEvents">Toggle pointer events</button>

或者,使用classList.remove("no-pointer")代替toggle,您就明白了。
另外,不要使用HTML内联on*处理程序,而要使用addEventListener。JS应该在一个地方,那就是相应的标签或文件。不在HTML中传播。

q9yhzks0

q9yhzks03#

除非需要,否则不建议将内联样式保留在标记中,因为它们具有最高优先级。使用带有必要样式的css类是一个很好的做法。因此,有两个选项:

  • 添加/删除类(推荐)
  • 删除样式属性或更改其内容(不推荐)
const toggleNoEvents = () => {
  const canvasId = document.querySelector('#canvas');
  canvasId.classList.toggle('no_events');
};
.no_events {
  pointer-events:none;
  /* to test */
  user-select:none;
}
<div id="canvas" class="no_events">test</div>

<button onclick='toggleNoEvents()'>Toggle no events</button>
yqyhoc1h

yqyhoc1h4#

当用户选中该框时,他们可以使用画布,然后他们不选中该框,他们不能使用画布,这是对我有效的,有点像一个bug,我不得不在一个上使用“”,而不是另一个来让它工作。即使这样,它的指针事件,而不是指针事件。

function signatureClear() {
document.getElementById("canvasWrap").style.pointerEvents = 'none';
}

关闭

function qqq() {
document.getElementById("canvasWrap").style.pointerEvents = null;
}

相关问题