jQuery:获取每个元素的宽度并将它们相加

20

我该如何获取每个元素的宽度并将它们相加?

例如,这是HTML代码:

<div id="container">
<div class="block-item" style="width:10px"></div>
<div class="block-item" style="width:50px"></div>
<div class="block-item" style="width:90px"></div>
<div>

我可以想到遍历每个元素,但如何将数字求和?

$('.block-item').each(function(index) {
    alert($(this).width());
});

我想要得到 150(10 + 50 + 90) 的总数。

谢谢。

3个回答

30

使用parseInt(value, radix)函数:

var totalWidth = 0;

$('.block-item').each(function(index) {
    totalWidth += parseInt($(this).width(), 10);
});

这里有一个示例


1
可能想要为收集器使用 +=,是吗? - Alex Mcp
@Alex 谢谢,我在创建小样例时自己发现了那个愚蠢的打字错误。 - no.good.at.coding
4
10是一个基数。如果没有它,在解析时可能会得到意外的结果。有了它,你可以获得十进制结果,而不是八进制结果。 - vector
如果您有使用 reduce() 的选项,您可以通过执行 $('.block-item').get().reduce(function(width, el){ return width + $(el).width() }, 0) 进一步简化此操作。 - Phil Cooper

2
var w = GetWidths('.block-item');

function GetWidths(id) {
    var i = 0;

    $(id).each(function (index) {
        i += parseInt($(this).width(), 10);
    });

    return i;
}

变量和函数之间的传递应该简洁而优雅。 - Alexander Dixon

0

对于那些最近看到这个帖子的人: 你可以轻松使用jQuery map

var y = $('.block-item').map( function() {
    return $(this).width();
}).get()
.reduce((partialSum, a) => partialSum + a, 0);
console.log(y)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接