我在执行某个功能之前就遇到了问题。在matchCheck
函数中,funcRemove
函数在alert('No match')
之前被调用。我试图先调用警报,然后再调用funcRemove
函数(一旦警报消失)。
代码如下:
const listAddCard = document.querySelectorAll('.card');
const moveElem = document.querySelector('.moves');
for(i=0; i<listAddCard.length; i++){
listAddCard.item(i).appendChild(shuffleCards[i]);
if(i>0){
if(shuffleCards[i].classList.value === shuffleCards[0].classList.value){
listAddCard.item(i).classList.add('match');
}
}
else listAddCard.item(i).classList.add('match');
}
let turnCheck = 0;
let cardChecker = '';
let prevCard = '';
let moves = 3;
let matchCheck = function(evtObj){
// console.log(turnCheck);
if(turnCheck===1){
// setTimeout(function(){}, 1000);
if(evtObj.target.innerHTML===cardChecker){
evtObj.target.classList.add('match');
prevCard.classList.add('match');
}
else{
alert('No match!');
}
funcRemove(prevCard, evtObj);
turnCheck = 0;
cardChecker = '';
prevCard = '';
moves++;
moveElem.innerHTML = moves;
return;
}
prevCard = evtObj.target;
cardChecker = evtObj.target.innerHTML;
turnCheck++;
}
let funcShow = function(evtObj){
evtObj.target.classList.add('open');
evtObj.target.classList.add('show');
}
const cardDeck = document.querySelectorAll('.card');
for(var i=0;i<cardDeck.length;i++){
cardDeck[i].addEventListener('click', funcShow);
cardDeck[i].addEventListener('click', matchCheck);
}
let funcRemove = function (p1,p2){
p1.classList.remove('open');
p1.classList.remove('show');
p2.target.classList.remove('open');
p2.target.classList.remove('show');
}
答案 0 :(得分:0)
在某些浏览器中,alert()
是异步的,因此脚本在显示消息时保持运行。
如果要在继续之前等待用户关闭对话框,请使用confirm()
代替alert()
。