Javascript 将变量更改为全局,以便外部警报功能可以使用它
作为一个家庭项目,我正在用JavaScript为我的学校编写一个小游戏(石头剪刀布),最近我被卡住了。我试图将原始(Javascript 将变量更改为全局,以便外部警报功能可以使用它,javascript,html,css,Javascript,Html,Css,作为一个家庭项目,我正在用JavaScript为我的学校编写一个小游戏(石头剪刀布),最近我被卡住了。我试图将原始(let)变量更改为全局变量,以便外部函数可以看到它们的值。 在每一轮中,pScore的值增加,分数更新 我试图将变量从let更改为var,但它不起作用 const game = () => { let pScore = 0; //player score let cScore = 0; //computer score var mScore = 12;
let
)变量更改为全局变量,以便外部函数可以看到它们的值。
在每一轮中,pScore
的值增加,分数更新
我试图将变量从let
更改为var
,但它不起作用
const game = () => {
let pScore = 0; //player score
let cScore = 0; //computer score
var mScore = 12; // maximal score
// the Function
const updateScore = () => {
const playerScore = document.querySelector(".player-score p");
const computerScore = document.querySelector(".computer-score p");
playerScore.textContent = window.pScore;
computerScore.textContent = cScore;
};
//Check for Paper
if (playerChoice === "paper") {
if (computerChoice === "scissors") {
winner.textContent = "computer wins! :(";
cScore++;
updateScore();
return;
} else {
winner.textContent = "you won! :)";
pScore++;
updateScore();
if (pScore === mScore) {
finalScore();
}
return;
}
}
};
//The Outer function
function timer() {
var countDown = new Date(Date.now() + 60000).getTime();
var x = setInterval(
function () {
var now = new Date().getTime();
var distance = countDown - now;
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById("timer").innerHTML = seconds;
if (distance < 0) {
clearInterval(x);
alert(un + ' Time is up!' + alert(playerScore.textContent));
location.reload(true);
}
}, 1000
);
}
const游戏=()=>{
让pScore=0;//玩家得分
设Ccore=0;//计算机分数
var mScore=12;//最大分数
//功能
const updateScore=()=>{
const playerScore=document.querySelector(“.player score p”);
const computerScore=document.querySelector(“.computerScore p”);
playerScore.textContent=window.pScore;
computerScore.textContent=cScore;
};
//检查纸张
如果(播放选择==“纸张”){
如果(计算机选择==“剪刀”){
winner.textContent=“计算机赢了!:(”;
cScore++;
updateScore();
返回;
}否则{
winner.textContent=“你赢了!:)”;
pScore++;
updateScore();
如果(pScore==mScore){
finalScore();
}
返回;
}
}
};
//外部功能
函数计时器(){
var countDown=新日期(Date.now()+60000.getTime();
var x=设定间隔(
函数(){
var now=new Date().getTime();
var距离=倒计时-现在;
var秒=数学楼层((距离%(1000*60))/1000);
document.getElementById(“计时器”).innerHTML=seconds;
如果(距离<0){
净间隔(x);
警报(un+“时间到了!”+警报(playerScore.textContent));
位置。重新加载(true);
}
}, 1000
);
}
错误:未定义pScore或playerScore
我想倒计时功能达到pScore,然后发出警报
最后更新的分数 我已对您的代码进行了轻微的重新排列,以使其正常工作 更改
- 从
中删除了window.pScore
部分。pScore变量不是真正的全局变量,而是窗口。
函数中的全局变量game()
- 将
和playerScore
变量从computerScore
函数中移出,并使其可供game()
函数访问timer()
const playerScore=document.querySelector(“.player score p”);
const computerScore=document.querySelector(“.computerScore p”);
康斯特游戏=()=>{
让pScore=0;//玩家得分
设Ccore=0;//计算机分数
var mScore=12;//最大分数
//功能
const updateScore=()=>{
playerScore.textContent=pScore;
computerScore.textContent=cScore;
};
//检查纸张
如果(播放选择==“纸张”){
如果(计算机选择==“剪刀”){
winner.textContent=“计算机赢了!:(”;
cScore++;
updateScore();
返回;
}否则{
winner.textContent=“你赢了!:)”;
pScore++;
updateScore();
如果(pScore==mScore){
finalScore();
}
返回;
}
}
};
//外部功能
函数计时器(){
var countDown=新日期(Date.now()+60000.getTime();
var x=设定间隔(
函数(){
var now=new Date().getTime();
var距离=倒计时-现在;
var秒=数学楼层((距离%(1000*60))/1000);
document.getElementById(“计时器”).innerHTML=seconds;
如果(距离<0){
净间隔(x);
警报(un+“时间到了!”+警报(playerScore.textContent));
位置。重新加载(true);
}
}, 1000
);
}
interval函数的作用域中没有playerScore
。也许您应该简单地添加constplayerscore=document.querySelector(“.player score p”)代码>在使用它之前。另外,这一行位于updateScore
:playerScore.textContent=window.pScore代码>-为什么窗口
?谢谢你的建议,事实上我确实用这种方式尝试过,效果非常好。当时间到了,警报功能会根据要求显示球员的实际得分。再次感谢您!
const playerScore = document.querySelector(".player-score p");
const computerScore = document.querySelector(".computer-score p");
const game = () => {
let pScore = 0; //player score
let cScore = 0; //computer score
var mScore = 12; // maximal score
// the Function
const updateScore = () => {
playerScore.textContent = pScore;
computerScore.textContent = cScore;
};
//Check for Paper
if (playerChoice === "paper") {
if (computerChoice === "scissors") {
winner.textContent = "computer wins! :(";
cScore++;
updateScore();
return;
} else {
winner.textContent = "you won! :)";
pScore++;
updateScore();
if (pScore === mScore) {
finalScore();
}
return;
}
}
};
//The Outer function
function timer() {
var countDown = new Date(Date.now() + 60000).getTime();
var x = setInterval(
function () {
var now = new Date().getTime();
var distance = countDown - now;
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById("timer").innerHTML = seconds;
if (distance < 0) {
clearInterval(x);
alert(un + ' Time is up!' + alert(playerScore.textContent));
location.reload(true);
}
}, 1000
);
}