0

pjQuery如何计算标签之间的字符数?

我尝试如下:

演示

html:

<b>1</b>
<b>1</b>
<b>1</b>

js:

var tBytes = 0,
    tFiles = $('b').length;
for (var tFileId = 0; tFileId < tFiles; tFileId++) {
    tBytes += $('b').text();
}
alert(tBytes);​ // Output is : 0111111111 I want output as: 3

我该怎么办?

​</p>

4

5 回答 5

2
var total = 0
$('b').each(function(index, element) {
    total += $(element).text().length;
})
alert(total);​

http://jsfiddle.net/TPFkF/2/

于 2012-11-17T21:27:31.133 回答
1
$('b').each(function(){
total += parseInt($(this).text());
})
于 2012-11-17T21:27:22.163 回答
1
var tBytes = 0,
    tFiles = $('b').length;
$('b').each(function(){
    tBytes += parseInt($(this).text(),10);
});
console.log(tBytes);

jsFiddle 示例

于 2012-11-17T21:29:32.720 回答
0

你也可以很容易地用纯 javascript 做到这一点,不需要 jquery:

var tBytes  = 0,
    tFiles= document.getElementsByTagName('b');

for(var i=0,z=tFiles.length;i<z;i++) { 
    tBytes += +(tFiles[i].textContent || tFiles[i].innerText);
}

alert(tBytes);​
于 2012-11-17T21:25:41.700 回答
0

你也可以看看这段代码:

Array.prototype.Sum = function()
{
    var result = 0;

    $(this).each(
        function()
        {
             result += this;
        }
    );

    return result;
};

alert($("b").map(function () { return parseInt($(this).text()); }).toArray().Sum());

JSFiddle在这里

如果你有兴趣,甚至是这个:

$.fn.Sum = function()
{
    var result = 0;

    $(this).each(
        function()
        {
             result += this;
        }
    );

    return result;
};

alert($("b").map(function () { return parseInt($(this).text()); }).Sum());

JSFiddle在这里

最后是我最喜欢的:

$.fn.Sum = function(action)
{
    var result = 0;

    $(this).each(
        function()
        {
             result += action.call(this);
        }
    );

    return result;
};

alert($("b").Sum(function () { return parseInt($(this).text()); }));

JSFiddle在这里

于 2012-11-17T21:47:15.873 回答