如何引用div标记的Javascript函数来添加逗号



我是一个Javascript新手。。。我听说过jQuery,但不知道如何使用它,所以请容忍我在这里完全缺乏知识…:)

我正在将Excel数据库中的信息动态导入网站。它工作得很好,只是没有一个数字有逗号——这是一个格式问题,我不能在源代码中更改,所以我需要在网站代码中更改它。

相关的HTML代码如下所示:

<tr><td class="num">191025</td><td>Stuff</td><td class="num">$60</td></tr>
<tr><td class="num">184160</td><td>Other Stuff</td><td class="num">$15</td></tr>

我想使用Javascript(或jQuery-任何有效的)为所有现有的"num"类添加逗号(因此191025将显示为191025)。

我一直在浏览这个网站和其他网站,发现了这个网站:http://www.mredkj.com/javascript/nfbasic.html它有这个公共域代码:

function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(d+)(d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

这看起来很棒,我把它添加到了我现有的外部.js页面中,我在html页面中引用了该页面。

然而,现在的问题是如何使用代码?看看那个页面上的例子,我似乎不得不做这样的事情:

<tr><td class="num">addCommas(191025)</td><td>Stuff</td><td class="num">$60</td></tr>

这是不现实的——有数百个这样的数字,我无法单独更新每一个。

我确信有一种方法,Javascript(或jQuery?)可以自动将编码应用于现有的"num"类,以插入逗号。。。但我不知道该怎么做。所以,所有这些都引出了我的问题:我如何有效地将这个(或其他更好的?)代码应用到div类中,以便添加逗号

我非常感谢任何帮助。。。但请记住我的新手身份,并让我知道需要在外部.js表&html页面上的内容。

谢谢!!

在页面加载时执行此代码:

$(".num").each(function() {
   var self = $(this), text = self.text();
   self.text(addCommas(text));
});
jQuery解决方案:
$('.num').each(function () {
    $(this).text(addCommas($(this).text()));
});​​​​​​​​​​

javascript解决方案(在IE中不起作用,因为它不支持getElementsByClassName)

var elements = document.getElementsByClassName('num');
var textPropertyToUse; // cross-browser support
for (var i = 0; i < elements.length; i++) {
    textPropertyToUse = 'textContent' in elements[i] ? 
        'textContent' : 
        'innerText';
    elements[i][textPropertyToUse] = addCommas(elements[i][textPropertyToUse]);
}

工作示例:http://jsfiddle.net/XpbJV/

一个非常简单的jQuery解决方案是…

$(".num").text(addCommas);

只要您将addCommas函数签名更改为。。。

function addCommas(i, nStr)

这将起作用,因为addCommas将当前文本内容作为第二个参数,并返回更新后的文本内容。这就是jQuery方法的大多数迭代器版本的工作方式。

演示:http://jsfiddle.net/gprf6/

最新更新