Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的DOM操作和警报函数行为_Javascript - Fatal编程技术网

JavaScript中的DOM操作和警报函数行为

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)

在开发一个简单的javascript游戏时,我面临以下问题

代码如下:

全局变量定义:

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