循环遍历表tr并从第二个td

时间:2016-10-05 00:31:42

标签: javascript html

我有以下HTML表格:

<table id="review-total">
     <tbody><tr class="wlp">
            <td class="left-cell">WLP Total</td>
            <td>199.00</td>
     </tr>
     <tr class="tax">
            <td class="left-cell">GST</td>
            <td>19.90</td>
     </tr>
     <tr class="net">
        <td class="left-cell">Order Total</td>
        <td class="net-price">$218.90</td>
    </tr>
    </tbody>
</table>

我试图遍历此表并检索值,即

199.00,19.90和$ 218.90我有以下代码:

var reviewTotal = document.getElementById('review-total');
for (var i = 1; i < reviewTotal.rows.length; i++) {
  if (reviewTotal.rows[i].cells.length) {
     wlpTotal = (reviewTotal.rows[i].cells[1].textContent.trim());
     gstAmount = (reviewTotal.rows[i].cells[3].textContent.trim());
     totalOrderAmount = (reviewTotal.rows[i].cells[5].textContent.trim());
  }
}

我在尝试检索上面指定的值时遇到一个小问题,目前我得到的错误是textContent未定义。

有人可以告诉我应该如何检索这些值,不幸的是我在Javascript中并不强大。

2 个答案:

答案 0 :(得分:3)

您有3行,每行只有2个单元格。 3和5指数为undefinedundefined没有.textContent属性。

如果要使用特定变量名存储值,请删除循环并手动选择目标元素:

var wlpTotal = reviewTotal.rows[0].cells[1].textContent.trim();
var gstAmount = reviewTotal.rows[1].cells[1].textContent.trim();
var totalOrderAmount = reviewTotal.rows[2].cells[1].textContent.trim();

如果要将值存储在数组中,可以编写代码:

var values = [].map.call(reviewTotal.rows, function(row) {
   return row.cells[1].textContent.trim();
});

通过使用ES2015的Destructuring Assignment,您还可以提取阵列的元素:

var [wlpTotal, gstAmount, totalOrderAmount] = values;

答案 1 :(得分:0)

首先:索引从行或单元格开始。 Secend:获取标签中的值以使用innerText或innerHTML,代码如下:

**//a[Text()='Electronics']