javascript - 知道单击了哪个按钮的方法-Angular 5

标签 javascript css angular

我正在开发一个测验应用程序,对于给定的问题有 4 个选项。我已经编写了一个函数来验证单击的选项是正确答案还是错误的。我在知道用户选择了哪个选项时遇到了问题,我想使用 CSS 将其设置为样式——如果选择了错误的选项,则单击选项会变成红色,正确的选项会变成绿色,反之亦然。

HTML:

<div *ngFor="let actiVar of activeArray ;let j = index" >

        {{actiVar.QuestionID}}.{{actiVar.Question}}
        <br>
        <br>
        <button type="button"  name="s" id="one" (click)="filterAnswer(actiVar.OP[j+0]) ; getColor(actiVar.OP[j+0])" [ngStyle]="{backgroundColor: buttonColor}" [disabled]="permissionoptions">{{actiVar.OP[j+0]}}</button>
        <br>
        <br>
        <button type="button"  name="s" id="two" (click)="filterAnswer(actiVar.OP[j+1]) ; getColor(actiVar.OP[j+1])" [ngStyle]="{backgroundColor: buttonColor}" [disabled]="permissionoptions">{{actiVar.OP[j+1]}}</button>        <br>
        <br>
        <button type="button"  name="s" id="three" (click)="filterAnswer(actiVar.OP[j+2]) ; getColor(actiVar.OP[j+2])" [ngStyle]="{backgroundColor: buttonColor}" [disabled]="permissionoptions">{{actiVar.OP[j+2]}}</button>        <br>
        <br>
        <button type="button"  name="s" id="four" (click)="filterAnswer(actiVar.OP[j+3]) ; getColor(actiVar.OP[j+3])" [ngStyle]="{backgroundColor: buttonColor}" [disabled]="permissionoptions">{{actiVar.OP[j+3]}}</button>
        <br>
      </div>

我已经为所选选项设置了一个getColor func onclick,但它的作用是,如果用户选择了错误的选项,它会将所有 4 个选项变为红色,反之亦然。它没有专门将点击的选项变成红色。

getColor(j: any) { 
    if (j == this.activeArray[0].isRight) {

      this.buttonColor = 'green';
    }
    else {
      this.buttonColor = 'red';
    }
  }

this.activeArray[0].isRight 是从 JSON 中检索到的正确答案。 我知道我将不得不在按钮上使用单独的 id 标签来知道单击了哪个选项按钮,但我没有运气在 stackoverflow 上找到正确的逻辑。

最佳答案

您可以使用模板引用变量 -> https://angular.io/guide/template-syntax#ref-vars

<button #buttonRef1 type="button" (click)="filterAnswer(actiVar.OP[j+0], buttonRef1)" [disabled]="permissionoptions">{{actiVar.OP[j+0]}}</button>
<button #buttonRef2 type="button" (click)="filterAnswer(actiVar.OP[j+1], buttonRef2)" [disabled]="permissionoptions">{{actiVar.OP[j+1]}}</button>
<button #buttonRef3 type="button" (click)="filterAnswer(actiVar.OP[j+2], buttonRef3)" [disabled]="permissionoptions">{{actiVar.OP[j+2]}}</button>
<button #buttonRef4 type="button" (click)="filterAnswer(actiVar.OP[j+3], buttonRef4)" [disabled]="permissionoptions">{{actiVar.OP[j+3]}}</button>

过滤器答案:

filterAnswer(answer: string, button: HTMLButtonElement) {
    // Do logic here
    button.style.backgroundColor = desiredColor; // example: "#f00"
}

关于javascript - 知道单击了哪个按钮的方法-Angular 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50169613/

相关文章:

javascript - “How to fix ‘NGX Data Table Checkbox Issue In Angular?”

html - 不透明度的 CSS 动画不适用于 safari,但适用于 google chrome

javascript - 如何自定义 ngx Typeahead 事件类(通过 keyUp 和 Down 导航)?

angular - 如何在 Angular 中动态呈现 Markdown 文件?

javascript - javascript可以自定义css的@rule吗?

javascript - 如何在Mongodb中使用条件语句进行排序

javascript - 从 https 相对路径链接到非 https 页面

在 Windows 上使用 url() 加载图像的 CSS 会导致路径困惑

css - Bootstrap 4 "hidden"类不起作用

Angular 4,angularfire2,元数据版本不匹配