javascript使用类名遍历表行

标签 javascript arrays

这是下表代码,我想将所有 TD 值存储到一个数组中。

<tr class="item-row">
    <td class="item-name"><textarea>Item</textarea></td>
    <td class="description"><textarea>Item</textarea></td>
    <td><textarea class="cost">$0.00</textarea></td>
    <td><textarea class="qty">0</textarea></td>
    <td><span class="price">$0.00</span></td>
</tr>

<tr class="item-row">
    <td class="item-name"><textarea>Item</textarea></td>
    <td class="description"><textarea>Item</textarea></td>
    <td><textarea class="cost">$0.00</textarea></td>
    <td><textarea class="qty">0</textarea></td>
    <td><span class="price">$0.00</span></td>
</tr>

为此,我编写了以下代码:

function checkForm() {
    var table = document.getElementsByClassName("item-row");
    var arr = new Array();
    for (var i = 0, row; row = table.rows[i]; i++) {
        for (var j = 0, col; col = row.cells[j]; j++) {
            arr.push(row.cells[j].val);
        }  
    }
}

但这没有给我任何输出...我是 javascript 的新手,所以可能会遗漏一些重要的东西。

最佳答案

您的代码几乎是正确的,问题是 rows 属性适用于表而不适用于 tr,因此您必须使用表而不是 tr 直接。

另一件事是 getElementsByClassName 返回一个元素数组,因此您必须使用 [index] 来获取您的元素。

最后一件事是,要获取 cell 的值,您不能使用 val,因此请使用 firstChild 获取子节点和 value 获取代码中的值,或者更好,如@pawel 直接建议 cell.textarea :)

试试这段代码:

function checkForm() {
    var table = document.getElementsByClassName("yourTable")[0];
    var arr = new Array();
    for (var i = 0, row; row = table.rows[i]; i++) {
        for (var j = 0, col; col = row.cells[j]; j++) {
            arr.push(row.cells[j].firstChild.value);
        }  
    }
    console.log(arr);
}
<table class="yourTable">
<tr class="item-row">
              <td class="item-name"><textarea>Item</textarea></td>
              <td class="description"><textarea>Item</textarea></td>
              <td><textarea class="cost">$0.00</textarea></td>
              <td><textarea class="qty">0</textarea></td>
              <td><span class="price">$0.00</span></td>
          </tr>

          <tr class="item-row">
              <td class="item-name"><textarea>Item</textarea></td>
              <td class="description"><textarea>Item</textarea></td>
              <td><textarea class="cost">$0.00</textarea></td>
              <td><textarea class="qty">0</textarea></td>
              <td><span class="price">$0.00</span></td>
          </tr>
  </table>
<input type="button" onclick="checkForm();" value="check form"/>

希望对您有所帮助,

关于javascript使用类名遍历表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28225614/

相关文章:

javascript - 如何在html中画很多线?

javascript - 在 javascript 中实现类似 vlookup 的函数

javascript - 如何从 TypeScript 中的拆分字符串数组创建/合并对象?

java - 在 JAVA 中创建具有所有相同值的 List<Integer>

javascript - 从 vue-cli 应用程序中的 node_modules 导入 js 文件

javascript - 与三点语法等效的最干净、有效的 TypeScript 是什么?

javascript - 在 JavaScript 中将 UTC 日期转换为本地日期

c++ - 如何用 1000000 个元素声明类 C++

javascript - 对 JSON 进行排序或按原始顺序获取 JSON

javascript - 如何将嵌套的对象数组转换为数组对象