我有一份参与者名单:
<div class="heroWrapper">
<div class="image hero" *ngFor="let participant of participants; index as i" [class]="i === selectedParticipant ? 'selected hero' : 'image hero'">
<img [src]="participant.imageUrl" (click)="toggleMoves = !toggleMoves"/>
<span [ngStyle]="{'color': getColor(participant)}" class="HP">{{participant.hitPoints}}</span>
<span class="namePlayer" *ngIf="isHero(participant)">{{getPlayerName(participant)}}</span>
<span class="nameHero">{{participant.name}}</span>
</div>
</div>
下一个和上一个按钮:
next() {
if (this.selectedParticipant != this.participants.length - 1) {
++this.selectedParticipant;
} else {
this.selectedParticipant = 0;
}
this.toggleMove();
}
previous() {
if (this.selectedParticipant != 0) {
--this.selectedParticipant;
} else {
this.selectedParticipant = this.participants.length - 1;
}
this.toggleMove();
}
selectedParticipant是数组中元素的索引。 现在,当参与者HP为0时,我希望它们被禁用,这意味着它们将被下一个和上一个方法跳过。当他们被禁用时,我希望他们变灰。
我尝试添加
if (this.participants[selectedParticipant].hitPoints = 0) {
++selectedParticipant;
if (this.selectedParticipant != this.participants.length - 1) {
++this.selectedParticipant;
} else {
this.selectedParticipant = 0;
}
}
我必须使用相同的代码两次,因为必须检查每个团队。但由于某种原因,这会将参与者的点数设为0?
答案 0 :(得分:1)
你的if语句需要 == 而不是单个 = ,这就是为什么参与者的hp设置为0
== 是比较运算符
= 是一个赋值运算符
next() {
if(this.participants[selectedParticipant].hitPoints == 0) {
++this.selectedParticipant;
if (this.selectedParticipant > this.participants.length - 1) {
this.selectedParticipant = 0;
}
this.toggleMove();
}
}
答案 1 :(得分:1)
此处已进行分配而非比较。
练习在左侧编写常量,这样就不会进行分配而不是比较。
例如
if (0 == this.participants[selectedParticipant].hitPoints) {
}
if (0 = this.participants[selectedParticipant].hitPoints) {
} // it would break the execution and give an error because constants cant be assigned a value and so you find out the error easily.