Javascript 计数器只在jQuery游戏的第一次点击中工作

Javascript 计数器只在jQuery游戏的第一次点击中工作,javascript,html,jquery,Javascript,Html,Jquery,我对js和jQuery还不熟悉。每次赢了一场比赛,我都想让计数器上升。但是,计数器只能到达第一位,然后停止。有人告诉我,我需要在回调函数之外声明新的分数。我尝试了两种方法,在if语句的函数外部和else语句的内部。不管怎样,我都会得到同样的结果。我希望有人能指出我哪里出了问题以及如何解决 constmyapp={}; //数字选项回调函数 myApp.handleChoiceClick=函数(){ //从用户处保存所选号码 const userNumber=parseInt($(this.va

我对js和jQuery还不熟悉。每次赢了一场比赛,我都想让计数器上升。但是,计数器只能到达第一位,然后停止。有人告诉我,我需要在回调函数之外声明新的分数。我尝试了两种方法,在if语句的函数外部和else语句的内部。不管怎样,我都会得到同样的结果。我希望有人能指出我哪里出了问题以及如何解决

constmyapp={};
//数字选项回调函数
myApp.handleChoiceClick=函数(){
//从用户处保存所选号码
const userNumber=parseInt($(this.val());
//选择后禁用其他按钮
$('.numberOption').attr('disabled',true);
//为电脑播放器随机储存0到5之间的数字
const opponentNumber=Math.floor(Math.random()*5)+1;
//用手将用户和计算机选择的号码显示在页面上
const displayHand=函数(){
$(`.evenfindger${userNumber}`).css('z-index','10');
$(`finger${opponentNumber}`).css('z-index','10');
};
displayHand();
//将分数计数器设置为零
//使用模比较偶数或奇数是否获胜
//如果用户赢/输,则在页面上显示“赢”/“输”
const summedFingers=userNumber+opponentNumber;
如果(summedFingers%2==0){
$('.winSum').html(`${summedFingers}fingers`);
$('.winDeclaration').html('evens wins');
$(`.playreach`).css('visibility','visible');
//向用户添加分数
constuserscore=1;
myApp.evenscore更新(userScore);
}否则{
$('.winSum').html(`${summedFingers}fingers`);
$('.winDeclaration').html('胜算');
$(`.playreach`).css('visibility','visible');
//给对手加分
让opponentScore=0;
opponentScore+=1;
$('.oddScore').html(opponentScore);
}
};
myApp.evenScoreUpdate=函数(evenScore){
让newscore=0;
新闻核心+=均分;
$('.evenScore').html(新闻核心);
};
//重新创建播放按钮重置代码
myApp.handlePlayAgainClick=函数(){
$('.handReset').css('z-index','0');
$('.playreach').css('visibility','hidden');
$('.winSum').html('');
$('.winDeclaration').html('');
$('.numberOption').attr('disabled',false);
};
//页面加载时淡入页眉文本
myApp.headerAnimate=函数(){
$('.hidden').fadeIn(1250).removeClass('hidden');
};
//再次播放点击功能
myApp.playreach=函数(){
$('.playreach')。在('click',myApp.handlePlayAgainClick)上;
};
//数字选项点击功能
myApp.clickNumbers=函数(){
$('.numberOption')。在('click',myApp.handleChoiceClick)上;
};
//初始化
myApp.init=函数(){
myApp.clickNumbers();
myApp.playreach();
myApp.headerAnimate();
};
//页面加载
$(函数(){
myApp.init();
});

即使
0
古怪的
0
再玩一次

在函数外定义分数变量意味着在函数外定义分数变量:

constmyapp={};
让userScore=0;
让opponentScore=0;
...
不要在每次调用myApp.handleChoiceClick时重新初始化它们。但是,您最好将这些值添加为
myApp
对象属性,并在
init
函数中初始化它们:

myApp.init=function(){
myApp.userScore=0;
myApp.opponentScore=0;
myApp.clickNumbers();
myApp.playreach();
myApp.headerAnimate();
};
使用
++
操作符增加变量/对象属性(没有区别,只是一种更常用的方法):

if(summedFingers%2==0){
...
//向用户添加分数
myApp.userScore++;
$('.evenScore').html(myApp.userScore);
}否则{
...
//给对手加分
myApp.opponentScore++;
$('.oddScore').html(myApp.opponentScore);
}
整个代码将是

constmyapp={};
//数字选项回调函数
myApp.handleChoiceClick=函数(){
//从用户处保存所选号码
const userNumber=parseInt($(this.val());
//选择后禁用其他按钮
$('.numberOption').attr('disabled',true);
//为电脑播放器随机储存0到5之间的数字
const opponentNumber=Math.floor(Math.random()*5)+1;
//用手将用户和计算机选择的号码显示在页面上
const displayHand=函数(){
$(`.evenfindger${userNumber}`).css('z-index','10');
$(`finger${opponentNumber}`).css('z-index','10');
};
displayHand();
//将分数计数器设置为零
//使用模比较偶数或奇数是否获胜
//如果用户赢/输,则在页面上显示“赢”/“输”
const summedFingers=userNumber+opponentNumber;
如果(summedFingers%2==0){
$('.winSum').html(`${summedFingers}fingers`);
$('.winDeclaration').html('evens wins');
$(`.playreach`).css('visibility','visible');
//向用户添加分数
myApp.userScore++;
$('.evenScore').html(myApp.userScore);
}否则{
$('.winSum').html(`${summedFingers}fingers`);
$('.winDeclaration').html('胜算');
$(`.playreach`).css('visibility','visible');
//给对手加分
myApp.opponentScore++;
$('.oddScore').html(myApp.opponentScore);
}
};
//重新创建播放按钮重置代码
myApp.handlePlayAgainClick=函数(){
$('.handReset').css('z-index','0');
$('.playreach').css('visibility','hidden');
$('.winSum').html('');
$('.winDeclaration').html('');
$('.numberOption').attr('disabled',false);
};
//页面加载时淡入页眉文本
myApp.headerAnimate=函数(){
$('.hidden').fadeIn(1250).removeClass('hidden');
};
//再次播放点击功能
myApp.playreach=函数(){
$('.playreach')。在('click',myApp.handlePlayAgainClick)上;
};
//数字选项点击功能
myApp.clickNumbers=函数(){
$('.numberOption')。