Javascript:在else if语句中更改布尔值

时间:2017-11-26 11:03:44

标签: javascript if-statement boolean

我遇到以下问题。我试图这样做,但它不起作用:

highlight(){

  if (this.firstClick && this.firstMove){
     grid[this.i][this.j+1].toHighlight = true;
     grid[this.i][this.j+2].toHighlight = true;
  } else if (!this.firstClick && this.firstMove) {
     grid[this.i][this.j+1].toHighlight = false;
     grid[this.i][this.j+2].toHighlight = false;
  } else if (this.firtClick && !this.firstMove){
     grid[this.i][this.j+1].toHighlight = true;
     grid[this.i][this.j+2].toHighlight = false;
  } else if (!this.firstClick && !this.firstMove){
     grid[this.i][this.j+1].toHighlight = false;
     grid[this.i][this.j+2].toHighlight = false;
  }

 }

如果我第一次在第一个地方更改布尔值,如果它表示grid [] []。toHighlight未定义,那么它就会变为真。

您可以查看我的github上的完整代码以及它在托管页面上的工作方式。我在黑棋子上使用过它。白色的背后有不同的逻辑,我尝试了不同的东西。

您可以在此处找到完整代码: https://github.com/GreedyCoding

它在线托管: https://greedycoding.github.io/p5js-Chess

2 个答案:

答案 0 :(得分:0)

如果声明

,其他第二个拼写错误
else if (this.firtClick && !this.firstMove){

它应该 firstClick 不确定这是否是原因,但希望它有所帮助。

答案 1 :(得分:0)

检查你的if / else if块 - 显然可以做一些清理工作

基本上划分两个基本分区 - 基于是否firstClick然后在每个分区内 - 确定它是否是第一个移动 有一些共同的值可以应用于每个条件 - 而不是在第一个if块中使用三元方程(在第二个块中根本不需要它。

highlight(){
  if (this.firstClick){
     grid[this.i][this.j+1].toHighlight = true;

     this.firstMove
        ? grid[this.i][this.j+2].toHighlight = true
        : grid[this.i][this.j+2].toHighlight = false;
  } else {
     grid[this.i][this.j+1].toHighlight = false;
     grid[this.i][this.j+2].toHighlight = false;
  } 
 }