2 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
每次開始游戲時(shí),都會(huì)向所有方塊添加事件偵聽器:
function startGame() {
board.style.pointerEvents = 'all';
target.innerHTML = randomSquare;
gameTime()
document.querySelectorAll('.square').forEach(item => {
item.addEventListener('click', event => { ////// <<<< HERE
第二次運(yùn)行游戲時(shí),單擊的方塊中有 2 個(gè)偵聽器。
第一個(gè)運(yùn)行正常,符合預(yù)期。但改變 randomSquare 值。
第二個(gè)事件會(huì)報(bào)告失敗,因?yàn)楝F(xiàn)在點(diǎn)擊的方塊不再是 randomSquare
當(dāng)你運(yùn)行游戲 100 次時(shí),你就有了 6400 個(gè)聽眾?。。。?/p>

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
第一種方法: 在附加新偵聽器之前刪除所有偵聽器(如果存在)
function onClick(event) {
const item = event.target;
if (item.id == randomSquare) {
console.log("correct", item);
score++;
tries++;
scoreOutput.innerHTML = score;
randomSquare = rndSq(squareset);
target.innerHTML = randomSquare;
scoreOutput.classList.add('correct');
scoreOutput.classList.remove('incorrect');
} else {
console.log("incorrect", item);
tries++;
// scoreDisplay.innerHTML = score;
randomSquare = rndSq(squareset);
target.innerHTML = randomSquare;
scoreOutput.classList.remove('correct');
scoreOutput.classList.add('incorrect');
};
}
function startGame() {
console.log("startGame");
//To make the board active
board.style.pointerEvents = 'all';
//First Target
target.innerHTML = randomSquare;
//Start Game timer
gameTime();
document.querySelectorAll('.square').forEach(item => {
item.removeEventListener('click', onClick);
item.addEventListener('click', onClick);
})
};
或者第二種方式,僅附加偵聽器一次:
document.querySelectorAll('.square').forEach(item => {
item.addEventListener('click', onClick);
})
function startGame() {
console.log("startGame");
//To make the board active
board.style.pointerEvents = 'all';
//First Target
target.innerHTML = randomSquare;
//Start Game timer
gameTime();
};
- 2 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報(bào)