首页 > 解决方案 > Angular / HTML 清除输入事件

问题描述

我正在开发一个 Angular 应用程序,我似乎偶然发现了一个小错误/问题。我的 html 中有 4 个可点击区域,每次点击都会调用组件的 .ts 脚本的一个函数。到目前为止,一切都很好。我想让每个区域只能点击一次,但这似乎不像我这样做的那样工作(我不太明白为什么)。

clicked(event: Event): void {

// Get coordinates of clicked cell
var elementId: string = (event.target as Element).id;

if(this.answersGiven.includes(elementId)) {
  console.log("included");
  return;
}

this.answersGiven.push(elementId);

和 html

       <table>
        <tr>
        <td id="A1" (click)="clicked($event);">
       </tr>

所以在第一次点击之后,答案应该被推送到工作正常的数组中。但是,在第二次单击同一单元格后,它不会跳入 if 条件。但是,在同一单元格上第三次单击时,它可以工作。当我记录事件时,第二次我只得到“”而不是元素 ID。我的猜测是,这可能与某种缓冲区有关,或者按钮被按下并保持向下,但我找不到与此相关的任何东西。

很高兴有任何帮助,谢谢:)

标签: javascripthtmlangulartypescript

解决方案


你应该试试这个:

HTML:

<table>
<tr>
<td (click)="clicked($event, 'A1');">
</tr>

TS:

clicked(event: Event, cod: string): void {

// Get coordinates of clicked cell
var elementId: string = (event.target as Element).id;

if(this.answersGiven.includes(cod)) {
  console.log("included");
  return;
}

this.answersGiven.push(cod);

如果 ID 保持不变,Angular 构建 HTML 的方式可能已经改变了您的<td id="A1",请检查您的浏览器开发人员工具。


推荐阅读