JavaScript中的DOM操作和警报函数行为
在开发一个简单的javascript游戏时,我面临以下问题 代码如下: 全局变量定义:JavaScript中的DOM操作和警报函数行为,javascript,Javascript,在开发一个简单的javascript游戏时,我面临以下问题 代码如下: 全局变量定义: var player1score,player2score= 0; var activePlayer = '1'; rollDice函数是按钮上单击事件的结果 var rollDice = function(){ var randomNumber = Math.floor((Math.random() * 7) + 0); var currentscore = newscore(randomNumber)
var player1score,player2score= 0;
var activePlayer = '1';
rollDice函数是按钮上单击事件的结果
var rollDice = function(){
var randomNumber = Math.floor((Math.random() * 7) + 0);
var currentscore = newscore(randomNumber);
console.log("randomNumber",randomNumber);
if(activePlayer === '1'){
document.querySelector("#player1_currentscore").innerHTML = randomNumber;
}else if(activePlayer === '2'){
document.querySelector("#player2_currentscore").innerHTML = randomNumber;
}
//below function displays an alert box based on currentscore value .
checkwhowins(currentscore);
}
//下面的函数从rollDice中调用,并根据传递的当前值显示一个警报框
function checkwhowins(currentscore){
if(currentscore >= 15 ){
//console.log('inside if condition ');
alert('Congratulations Player '+activePlayer+' !!!! , You are a winner with a score of '+currentscore);
}
}
问题:
我观察到的是,当checkwhowins方法显示警报框时,rollDice函数中的DOM操作不起作用。
指:
不将当前值显示为零
但是当checkwhowins不显示ALRET框时
document.querySelectorplayer2\u currentscore.innerHTML=randomNumber起作用,currentscore获得更新值
为什么会发生这种行为
我真的无法理解
为什么调用警报函数时DOM没有得到更新 我不确定会发生什么,但我会尝试延迟chekwhowins在超时后包装它:
setTimeout( () => checkwhowins(currentscore) , 1000); // one second delay
我想这会让DOM更新。当警报框出现时,重画还没有发生。关闭警报后,该值是否会更新?是的,该值会在警报关闭后更新。同时调用ALERT时如何进行值更新?activePlayer从未在checkwhowins函数中定义。什么是RandomNumber更新dom后应该调用checkwhowins方法,我猜逻辑中存在一些问题。我还假设变量activePlayer和totalScore是全局变量。
setTimeout( () => checkwhowins(currentscore) , 1000); // one second delay