2

抱歉这个菜鸟问题,但我正在尝试将此 javascript 函数应用于 html 表中的数据。该函数来自这个 Stack Overflow 帖子

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

我希望将此功能应用于以下内容:

<table>
    <tr>
        <td>5000</td>
        <td>5600</td>
    </tr>
</table>

希望在 5,600 之后返回 5,000。我想不通这个简单的事情。我知道我需要在其中一个标签上使用 id 或类,并且这需要与函数中的某些内容相匹配,所以我尝试了

<table>
    <tr class="numberWithCommas">
        <td>5000</td>
        <td>5600</td>
    </tr>
</table>

无济于事。鉴于赞成票的数量,我确信该功能有效。

一个善良的灵魂可以引导我完成这项工作吗?我已经用谷歌搜索了一个基本教程,但没有找到任何东西。

4

2 回答 2

3

您首先需要获取所有tds,在内容上调用函数并将结果插入到单元格中。

HTML

<table>
    <tr class="numberWithCommas">
        <td>5000</td>
        <td>5600</td>
    </tr>
</table>

Javascript

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

var elements = document.querySelectorAll('.numberWithCommas td'),
    i;

for (i in elements) {
    if (elements[i].innerHTML !== undefined) {
        elements[i].innerHTML = numberWithCommas(elements[i].innerHTML);
    }
}

演示

解释所有这些代码:

这是你的功能:

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

这使我们可以将td所有trs中的所有内容numberWithCommas作为一个类获取,并将它们全部设置为 javascript 变量中的数组elements

var elements = document.querySelectorAll('.numberWithCommas td'),
    i;

然后我们遍历数组td,一次访问一个:

for (i in elements) {
    ...
}

在 for 循环中,我们检查单元格的值是否为空:

if (elements[i].innerHTML !== undefined) {
    ...
}

if语句中,我们调用函数numberWithCommas()并将 的值传递给它elements[i].innerHTML。然后我们取回结果字符串并将其应用于elements[i].innerHTML

elements[i].innerHTML = numberWithCommas(elements[i].innerHTML);
于 2012-11-29T00:18:46.493 回答
1

您需要迭代each td并应用此功能..

var tr = document.getElementsByClassName('numberWithCommas');

for (var i = 0, len = tr.length; i < len; i++) {
    for(var j=0,len1 = tr[i].children.length;j<len1; j++){
        var td = tr[i].children[j];
        td.innerHTML= numberWithCommas(td.innerHTML)
    }
}​

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
};

检查小提琴

使用 jQuery

$('table tr.numberWithCommas').each(function(){
    var $tr = $(this);
    $tr.find('td').each(function(){
        var $td = $(this);
        $td.html(function(){
            return  numberWithCommas(this.innerHTML);
        });
    });        
});

jQuery小提琴

于 2012-11-29T00:14:48.217 回答