【问题标题】:access input type text value from inside a tr td using javascript使用javascript从tr td内部访问输入类型文本值
【发布时间】:2021-05-13 10:48:02
【问题描述】:

我是 Web 开发的新手,在尝试迭代表行数据值时不断陷入错误......我已经搜索并阅读了很多地方。

首先我想访问table tr td text

我已经使用某人文章中的 JavaScript 代码完成了这项工作,因为我想访问 td 输入类型的文本值,所以效果很好......我无法做到这一点

var myTab = document.getElementById('invoiceTable');
for (i = 1; i < myTab.rows.length; i++) {


  var objCells = myTab.rows.item(i).cells;

  for (var j = 0; j < objCells.length; j++) {
    var descriptionInvoice = objCells.item(3).innerHTML;

  }
}
<table id="invoiceTable">
  <thead>
    <tr>
      <th>Sno</th>
      <th>Description</th>
      <th>Unit</th>
      <th>quantity</th>
      <th>Price</th>
      <th>discount</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>HANON BALLON</td>
      <td>PIECE </td>
      <td><input type="text" name="" id="" value="1" required=""> </td>
      <td>232</td>
      <td><input class="" type="text" name="discount" value="0"></td>
      <td>
        <i class="far fa-trash-alt btnDelete"></i>
      </td>
    </tr>
  </tbody>
</table>

我已访问该行但无法访问输入类型文本值

【问题讨论】:

  • objCells.item(3) 应该是整个输入字段,所以如果你 console.log(objCells.item(3)) 你可以期待 如果是这种情况,您需要做的就是使用 objCells.item(3).value 访问它的值

标签: javascript html web


【解决方案1】:

您可以通过选择器获取所有#invoiceTable's td's 输入字段类型文本

document.querySelectorAll('#invoiceTable td input[type="text"]')

然后您可以使用 forEach 遍历元素并通过访问 .value 属性读取其值。 注意:如果您愿意,也可以使用老式的 for 循环

.forEach(x => {
    console.log(x.value);
  }
);

// access all <td> input type texts value
document.querySelectorAll('#invoiceTable  td input[type="text"]').forEach(x => {
    console.log(x.value);
  }
);
<table id="invoiceTable">
  <thead>
    <tr>
      <th>Sno</th>
      <th>Description</th>
      <th>Unit</th>
      <th>quantity</th>
      <th>Price</th>
      <th>discount</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>HANON BALLON</td>
      <td>PIECE </td>
      <td><input type="text" name="" id="" value="1" required=""> </td>
      <td>232</td>
      <td><input class="" type="text" name="discount" value="0"></td>
      <td>
        <i class="far fa-trash-alt btnDelete"></i>
      </td>
    </tr>
  </tbody>
</table>

【讨论】:

  • @Teemu 它在哪里考虑检查其类型是否为文本?
  • 谁在乎,这是该表中的第一个输入。 OP 没有提供任何替代标记。此外,您的代码会命中两个输入。如果类型很重要,请添加:myTab.querySelector('input[type="text"]')
  • @Teemu 是的,这是一个更智能的解决方案 ^^
  • @Teemu OP 已要求 我使用某人文章中的 java 脚本代码完成了该操作,它工作正常,直到我想访问 td 输入类型文本值...我无法做到那他要求我以为他想要输入字段的所有值类型文本但是是的它是模棱两可的,因为在问题标题中他要求一个值。
  • 谁知道 OP 真正想要什么... 选择器的一个小提示:后代组合器很慢(当文档很大时),它们首先尝试找到与列表中最后一个选择器匹配的元素,然后向上遍历 DOM,直到找到匹配左下一个选择器的元素。如果没有匹配的元素,则搜索与最后一个选择器匹配的下一个元素,等等。这就是为什么最好将搜索限制在特定元素内,而不是搜索整个文档。
猜你喜欢
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 2021-07-17
  • 2011-10-27
相关资源
最近更新 更多