【问题标题】:How to check if a value exist in a table and return the value of a cell in that row如何检查表中是否存在值并返回该行中单元格的值
【发布时间】:2020-03-26 18:35:28
【问题描述】:

我需要检查整个表,如果第 1 列有值(保留),并返回找到该值的那行的单元格 0 的值。

基本上点击一个按钮,运行函数并返回找到值(REVERVED)所在行的单元格0的值。

如果可以的话,我喜欢使用普通的 javascript 而不是 jquery。

如果我实际单击该行,则以下功能将起作用。

  <input type="button" value="☑️ check if RESERVED exists" onclick="findValueInRow()"> //
  <br>
  <br>

  <table id="table2">
    <thead>
      <tr>
        <th>ID</th>
        <th>Contact</th>
        <th>Country</th>
      </tr>
    </thead>
    <tr>
      <td>1</td>
      <td>Maria Anders</td>
      <td>Germany</td>
    </tr>
    <tr>
      <td>2</td>
      <td>RESERVED</td>
      <td>Mexico</td>
    </tr>
    <tr>
      <td>1</td>
      <td>Roland Mendel</td>
      <td>Austria</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Helen Bennett</td>
      <td>UK</td>
    </tr>
    <tr>
      <td>4</td>
      <td>RESERVED</td>
      <td>Canada</td>
    </tr>
    <tr>
      <td>5</td>
      <td>Giovanni Rovelli</td>
      <td>Italy</td>
    </tr>
  </table>
</body>



      function findValueInRow()
   {
    table = document.getElementById("table2");
    for(var i = 1; i < table.rows.length; i++)
     {
     table.rows[i].onclick = function()
      {
     // get the selected row index
      rIndex = this.rowIndex;
    var produtcID = this.cells[1].textContent;   
    //check to see if value RESERVED exists in the table
     if(produtcID == "RESERVED" )
      {
      alert(this.cells[0].textContent);

      }
      else{
       //my other code if the value is not found
       }//end else                    
       };
  }
   }

【问题讨论】:

  • 您的实际问题是什么?你想让代码做什么?请举一个带有示例数据的表格的示例。
  • 我已经用一些代码编辑了这个问题。基本上我需要单击一个按钮,运行该函数并返回找到值(REVERVED)的行的单元格 0 的值。该代码有效,只是我不想点击该行。
  • 如果你喜欢一些,你可以投票或接受一个(在投票按钮下)。

标签: javascript


【解决方案1】:

是现在吗?

function findValueInRow() {
  table = document.getElementById("table2");
  var rows = table.rows;
  for (var i = 1; i < rows.length; i++) {
    var cols = rows[i].cells;
    for (var c = 0; c < cols.length; c++) {
      if (cols[c].innerText == 'RESERVED') {
        return cols[0].innerHTML;
      }
    }
  }
  return '';
}
table {
  background:gray;
}
td, th {
  background:white;
}
<input type="button" value="☑️ check if RESERVED exists" onclick="alert(findValueInRow())">
<br>
<br>

<table id="table2">
  <thead>
    <tr>
      <th>ID</th>
      <th>Contact</th>
      <th>Country</th>
    </tr>
  </thead>
  <tr>
    <td>1</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>2</td>
    <td>RESERVED</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>1</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>3</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>4</td>
    <td>RESERVED</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>5</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
</table>

【讨论】:

  • 比原始代码更好(更干燥和模块化)。但他写了这个“如果一个表在第 1 列有值 - 返回该行的单元格 0 的值”。无论如何,Q不是那么清楚。 (这不是你的错)。
  • 无论如何,他必须学习更多,并且确定他的逻辑应该如何工作,所以为了好玩做了一个简短的演示,但假设 DOM 几乎是不言自明的,所以不难理解发生了什么那里...
  • 第二个版本,现在点击表格后可以工作,顺便说一句,全局部分也应该从 onload 调用,但是当脚本标签在正文旁边时,这不是必须的,而是好的做法(以防万一将在正文标记结束之前运行 - 例如在常见的 HEAD 标记内 - 在页面加载期间,表格可能不存在)。
  • 是的-汤姆,就是这样,谢谢。还要感谢所有做出贡献的人。
猜你喜欢
  • 2013-02-15
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多