首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在html表中添加单元格并检查是否重复,而不输入以下循环?

如何在html表中添加单元格并检查是否重复,而不输入以下循环?
EN

Stack Overflow用户
提问于 2021-07-02 09:43:42
回答 3查看 51关注 0票数 0

嘿,伙计们,我试图在html表中添加一个新的单元格,同时检查表中的副本。我在表上循环以检查副本,但是我希望这个警报只显示是否有重复的?现在,警报正在循环使用每个函数吗?这可能是一个简单的任务,但我无法处理。有人能帮我吗?

代码语言:javascript
运行
复制
$("#btnCheck").on("click", function() {
  let company_name = $("#test1").val();

  $('#companyTable tr').each(function() {
    $(this).find('td').each(function() {
      if ($(this).text() === company_name) {
        alert("duplicate  found");
        return false;
      } else {
        alert("duplicate NOT found");
        return false;
      }
    });
  });
});
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="companyTable">
  <thead>
    <tr>
      <td>Company Name</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>toyota</td>
    </tr>
    <tr>
      <td>bmw</td>
    </tr>
    <tr>
      <td>suzuki</td>
    </tr>
  </tbody>
</table>

<input type="text" id="test1" />
<input type="button" id="btnCheck" value="ADD" />

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-02 10:00:12

我在JQuery中并不常见,但在普通的JavaScript中,这应该是可行的:

代码语言:javascript
运行
复制
    document.querySelector("#btnCheck").onclick = () => {
        const companyName = document.querySelector("#test1").value;
        let found = false;
        document.querySelectorAll("#companyTable td").forEach(cell => {
            if(cell.innerText == companyName){
                 found = true
            }
        })
        alert("duplicate "+(found ? "" : "NOT ")+" found");
    }

您不需要查询行,那么cells.

  • alerting在每个单元格上是不正确的。您应该(如上所述)存储您的结果(=found),并且在循环结束时只使用您的结果.

注意:在这种情况下使用forEach似乎不是最有效的方法。您应该选择一个临时的for循环,以便在找到匹配时立即对其进行break

代码语言:javascript
运行
复制
const cells = document.querySelectorAll("#companyTable td");
found = false;
for(let i = 0; i < cells.length; i++){
    if(cells[i].innerText == companyName) {
        found = true;
        break; // Stop the loop
    }
}
票数 3
EN

Stack Overflow用户

发布于 2021-07-02 10:06:00

从外部循环中提前断开,只有在循环后找不到时才发出警报:

代码语言:javascript
运行
复制
$("#btnCheck").on("click", function () {

  let company_name = $("#test1").val();
  let found = false;
  $('#companyTable tr').each(function () {
    $(this).find('td').each(function() {
      if ($(this).text() === company_name) {
        alert("duplicate  found");
        found = true;
        return false;
      }
    });
    if (found) {
       // no need to search through other rows either
       return false;
    }

  });
  if (!found) {
    alert("duplicate NOT found");
  }
});
票数 1
EN

Stack Overflow用户

发布于 2021-07-02 10:14:42

在JQuery中,我会使用类似于

代码语言:javascript
运行
复制
$("#companyTable tr td:contains('"+textToSearch+"')")

这将返回表id="companyTable“中TR行中的所有TD对象,其中包含"textToSearch”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68222997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档