问题描述
对于为什么保持事件侦听器按钮可以访问我在函数init()中创建的winningscore变量感到困惑。自从winningscore在函数中声明以来,我就曾想过,在其他任何地方都无法访问它。我想念什么?不能抱怨它起作用,而只是想了解为什么会这样。感谢帮助。
let gamePlaying = true;
let activePlayer = 0;
let roundscore = 0;
let scores = [0,0];
init();
diceRolls = []
prevIoUsDiceRoll = 0
let counter = 0
document.querySelector('.btn-roll').addEventListener('click',function() {
if (gamePlaying) {
//1. Random number
let dice = Math.floor(Math.random()*6)+1;
//2. display the result
let diceDOM = document.querySelector('.dice');
diceDOM.style.display = 'block';
diceDOM.src = 'dice-'+ dice + '.png';
//3. Update the round score IF the rolled number was NOT a 1 or if rolled two 6's in a row
diceRolls.push(dice);
counteradj = counter++ - 1;
prevIoUsDiceRoll = diceRolls[counteradj];
console.log(prevIoUsDiceRoll);
if (dice === 6 && dice === prevIoUsDiceRoll) {
scores[activePlayer] = 0;
document.getElementById('score-'+activePlayer).innerHTML = scores[activePlayer]
nextPlayer();
} else if (dice !==1) {
//add score
roundscore += dice;
document.querySelector('#current-' + activePlayer).innerHTML = roundscore;
}
else {
//Next player
nextPlayer();
}
}});
document.querySelector('.btn-hold').addEventListener('click',function() {
if(gamePlaying){
//Add CURRENT score to GLOBAL score
scores [activePlayer] += roundscore
//Update the UI
document.querySelector('#score-' + activePlayer).textContent = scores[activePlayer];
//Check if player won the game
if (scores[activePlayer]>=winningscore){
document.querySelector('#name-'+activePlayer).textContent = 'Winner!';
document.querySelector('.dice').style.display = 'none';
document.querySelector('.player-' + activePlayer + '-panel').classList.add('winner');
document.querySelector('.player-' + activePlayer + '-panel').classList.remove('active');
gamePlaying = false;
}
else {
nextPlayer();
}
}});
function nextPlayer (){
activePlayer === 0 ? activePlayer = 1 : activePlayer = 0;
roundscore = 0;
document.getElementById('current-0').textContent = '0';
document.getElementById('current-1').textContent = '0';
document.querySelector('.player-0-panel').classList.toggle('active');
document.querySelector('.player-1-panel').classList.toggle('active');
document.querySelector('.dice').style.display = 'none';
}
document.querySelector('.btn-new').addEventListener('click',init);
function init() {
winningscore = prompt ('Set Winning score');
scores = [0,0];
activePlayer = 0;
roundscore = 0;
gamePlaying = true;
document.querySelector('.dice').style.display = 'none';
document.getElementById('score-0').textContent = '0';
document.getElementById('score-1').textContent = '0';
document.getElementById('current-0').textContent = '0';
document.getElementById('current-1').textContent = '0';
document.getElementById('name-0').textContent = 'Player 1';
document.getElementById('name-1').textContent = 'Player 2';
document.querySelector('.player-0-panel').classList.remove('winner');
document.querySelector('.player-1-panel').classList.remove('winner');
document.querySelector('.player-0-panel').classList.remove('active');
document.querySelector('.player-1-panel').classList.remove('active');
document.querySelector('.player-0-panel').classList.add('active');
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)