Javascript JS&;Jquery:函数在被调用后会变得疯狂。

Javascript JS&;Jquery:函数在被调用后会变得疯狂。,javascript,jquery,function,Javascript,Jquery,Function,在游戏中,当它显示你需要点击的颜色时,你点击了错误的颜色,在它发出警告后,颜色开始变得疯狂,这两个可能的功能在第24行和第55行,但我无法在这两行中找到问题。 我希望在失败警报后颜色正常运行。 我怎样才能解决这个问题? 代码如下: //设置变量 var gameStatus=false; var-strict=false; var playerTurn=true; 变量颜色=['绿色'、'红色'、'黄色'、'蓝色']; var colorsPicked=[“红色”、“红色”、“黄色”、“蓝色

在游戏中,当它显示你需要点击的颜色时,你点击了错误的颜色,在它发出警告后,颜色开始变得疯狂,这两个可能的功能在第24行和第55行,但我无法在这两行中找到问题。 我希望在失败警报后颜色正常运行。 我怎样才能解决这个问题? 代码如下:

//设置变量
var gameStatus=false;
var-strict=false;
var playerTurn=true;
变量颜色=['绿色'、'红色'、'黄色'、'蓝色'];
var colorsPicked=[“红色”、“红色”、“黄色”、“蓝色”、“绿色”];
var colorsClicked=[];
风险等级=1;
var指数=0;
var-lindex=0;
var showOn=假;
//游戏状态函数
$(“#开始”)。单击(函数(){
if(gameStatus==false){
gameStatus=true;
gameStart();
}
});
//游戏开始功能
函数gameStart(){
//将此函数留待以后使用
}
//更改颜色按钮
$('.cubes')。单击(函数(e){
如果(playerTurn==true){
$(e.target).addClass(e.target.id);
colorsClicked.push(例如target.id);
setTimeout(函数(){
$(e.target.removeClass(e.target.id);
}, 500);
//轮到玩家并检查颜色是否正确
如果(颜色勾选[索引]!==颜色勾选[索引]){
警报('失败!重试');
showColorStart();
指数=0;
}否则{
if(colorsPicked.length==colorsicked.length){
级别++;
随机颜色();
showColorStart();
}
}
索引++;
}否则{
返回;
}
});
//随机颜色选取函数
函数randomColor(){
var random=Math.floor(Math.random()*4);
colorsPicked.push(颜色[随机]);
}
//级别开始时显示的颜色
函数showColorStart(){
如果(shown==false){
shown==true;
playerTurn=false;
lindex=0;
setInterval(函数(){
如果(颜色标记[lindex]=“绿色”){
$('绿色').addClass('绿色');
}否则如果(颜色标记[lindex]=“红色”){
$('红色').addClass('红色');
}否则,如果(colorsPicked[lindex]=“黄色”){
$('黄色').addClass('黄色');
}否则,如果(colorsPicked[lindex]=“蓝色”){
$('蓝色').addClass('蓝色');
}
setTimeout(函数(){
$('绿色').removeClass('绿色');
$('红色').removeClass('红色');
$('黄色').removeClass('黄色');
$('蓝色').removeClass('蓝色');
}, 1000);
if(lindex==colorsPicked.length){
clearInterval();
lindex=0;
指数=0;
playerTurn=true;
}
lindex++;
}, 1500);
}否则{
返回;
}
}
showColorStart()

西蒙游戏



如果出现故障,您也可以调用
$('#start')。单击()重置游戏


当您在故障情况下调用
showcolorst()
时,它只是在调用
showcolorst()
之后重置
索引。因此,在对代码调用
showcolorst()

之前,您可能需要重置一些变量,因为您从未真正清除间隔,这可能会导致问题。有一些次要的事情,例如,除了
if(playerTurn==true)
之外,您可以只做
if(playerTurn)
这些事情不会导致您遇到的问题,但这只是一种很好的做法

不确定整个过程应该如何工作,但清除间隔似乎可以解决您遇到的问题

//设置变量
var gameStatus=false;
var-strict=false;
var playerTurn=true;
变量颜色=['绿色'、'红色'、'黄色'、'蓝色'];
var colorsPicked=[“红色”、“红色”、“黄色”、“蓝色”、“绿色”];
var colorsClicked=[];
风险等级=1;
var指数=0;
var-lindex=0;
var showOn=假;
//游戏状态函数
$(“#开始”)。单击(函数(){
如果(!游戏状态){
gameStatus=true;
gameStart();
}
});
//游戏开始功能
函数gameStart(){
//将此函数留待以后使用
}
//更改颜色按钮
$('.cubes')。单击(函数(e){
如果(播放翻转){
$(e.target).addClass(e.target.id);
colorsClicked.push(例如target.id);
setTimeout(函数(){
$(e.target.removeClass(e.target.id);
}, 500);
//轮到玩家并检查颜色是否正确
log(colorsPicked[index],colorsPicked[index]);
如果(颜色勾选[索引]!==颜色勾选[索引]){
警报('失败!重试');
showColorStart();
指数=0;
}否则{
if(colorsPicked.length==colorsicked.length){
级别++;
随机颜色();
showColorStart();
}
}
索引++;
}否则{
返回;
}
});
//随机颜色选取函数
函数randomColor(){
var random=Math.floor(Math.random()*4);
colorsPicked.push(颜色[随机]);
}
//级别开始时显示的颜色
函数showColorStart(){
如果(!showOn){
shown==true;
playerTurn=false;
lindex=0;
//保存计时器
var gameTimer=setInterval(函数(){
如果(颜色标记[lindex]=“绿色”){
$('绿色').addClass('绿色');
}否则如果(颜色标记[lindex]=“红色”){
$('红色').addClass('红色');
}否则,如果(colorsPicked[lindex]=“黄色”){
$('黄色').addClass('黄色');
}否则,如果(colorsPicked[lindex]=“蓝色”){
$('蓝色').addClass('蓝色');
}
setTimeout(函数(){
$('绿色').removeClass('绿色');
$('红色').removeClass('红色');
$('黄色').removeClass('黄色');
$('蓝色')。