获取单元格<它有特定的className

Getting the cell of a <tr> that has particular className

本文关键字:className 单元格 获取      更新时间:2023-09-26

我想做的是得到这个单元格,其中classname是"revision_id"。

<tr>
    <td class="supplierOrderId">10790</td>
    <td class="revision_id">#7</td>
    <td class="supplier">DGI Developpement </td>
    <td class="quantity">80</td>
    <td class="stock">0</td>
    <td class="purchase_price">10.00</td>
    <td class="comments"> </td>
</tr>

我是这样做的:

revision = this.parentNode.parentNode;
revisionId = revision.cells[1].innerHTML.replace( /[^'d.]/g, '' );

(因为我想要得到字符串的整型)

iRevisionId = parseInt(revisionId);

是否有一个更合适的方法来做到这一点,与给定的className ?因为如果将来有人在我之前添加一个单元格,我的代码将被"弃用"。

希望我已经给出了所有的细节,

谢谢。

// More Details //

大多数答案的问题是,只有当我有1个<tr>时,它们才有效。一旦我得到了多个,它就得到了每个修订版id,像这样:

console.log(result) -> #1#2#3#4

(例如,如果我有4个<tr>)

所以这就是为什么我得到这样一个好的:revision = this.parentNode.parentNode;//输出好的<tr>

但是在那之后,我不能得到给定的className。

如果这是tr

var data = $(this).children(".revision_id").text()

使用text()方法,您可以在td元素中获得文本。然后像解析parseInt()

那样解析它
$(function() {
    var quantity = $('tr td.quantity').text();
    console.log(parseInt(quantity));
});

你可以通过jquery这样做:

 var value= parseInt($(".vision_id").text().match(/[0-9]+/g)[0]);
<<p> 小提琴例子/strong>

取决于你是否会使用jQuery。

纯JavaScript

在纯JS中,如果您使用的是现代浏览器,则可以使用getElementsByClassName函数。出于演示的目的,我假设您的表上有一个可以使用的ID。
var myClassName = 'revision_id';
var table = document.getElementById('mytable');
// the desired TD
var td = table.getElementsByClassName( myClassName ) );

参见Mozilla的文档getElementsByClassName。

同样,这个答案也适用于向后兼容。

jQuery

当然,使用jQuery会更容易:

var $td = $('#mytable td.revision_id');

演示:http://jsfiddle.net/uJB2y/1/

如果你想使用jquery,那么你可以使用.filter()方法:

 var text = $('td').filter(function () {
     return this.className === 'revision_id';
 }).text().slice(1);
 text = +text; // conversion for int
 alert(text);
演示