首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JS -不能给一个元素点击两次

JS -不能给一个元素点击两次
EN

Stack Overflow用户
提问于 2022-12-01 10:46:23
回答 2查看 38关注 0票数 0

我正在做一个国际象棋游戏,我有一个div作为一个块,在这个div中有一个按钮和一个典当div,我给每个按钮点击一下就可以移动我的棋子,现在为了杀死一个棋子,我想再点击一下按钮,但是由于某些原因,我不能帮助您。

我的代码

代码语言:javascript
运行
复制
function hlblp(a) {
let pawn = document.getElementsByClassName("blp")[a]
let parent = Number.parseInt(pawn.parentElement.id)
hightlitght(parent)
for (let i=0; i<64; i++) {
let block = document.getElementsByClassName("Btns")[i]
block.onclick = function() {movepawn(block, pawn)};
}}

function removepawn(b) {console.log(b[0])}

function hightlitght(a) {


if (var1==true) {
var1 = false

let var2 = a-10

var2 = var2+"b"


if (occupied[var2]==true) {
let b1 = a-20
b11 = "r"+b1
let occ1 = b1+"b"
b11 = document.getElementsByClassName(b11)[0]
// this is where i want to give an second onclick
b11.onclick = function() {removepawn(b11)};

if ( occupied[occ1] == false ) {
if (
b1 < 89 && b1 > 80 ||
b1 < 79 && b1 > 70 ||
b1 < 69 && b1 > 60 ||
b1 < 59 && b1 > 50 ||
b1 < 49 && b1 > 40 ||
b1 < 39 && b1 > 30 ||
b1 < 29 && b1 > 20 ||
b1 < 19 && b1 > 10) {b11.style.display = "block";
}}
}}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-12-01 10:50:28

你不应该使用:

代码语言:javascript
运行
复制
block.onclick = function() { ... }

因为当你第二次吹气到onclick时,你就移除了上一次。

您可以创建将这两个事件结合在一起的函数,但这并不优雅。

或者你可以用正确的方式:

代码语言:javascript
运行
复制
block.addEventListener('click', function() { ... });
票数 1
EN

Stack Overflow用户

发布于 2022-12-01 10:50:40

请用addEventListener代替ELEMENT.onevent.如果需要删除当前的onClick事件并添加一个新事件,则可以:

  • removeEventListener来删除实际的一个。然后再次使用addEventListener重新附加.
  • 或在已经附加的addEventListener回调中添加一个附加逻辑,以区分不同单击的目的。

LINKS:

addEventListenerhttps://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener removeEventListenerhttps://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74640632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档