获取子元素的总宽度

时间:2014-05-07 14:47:32

标签: javascript jquery width measure

我有一些HTML标记:

<div id="container">
   <input type="text" id="a">
   <textarea id="b"></textarea>
   <div id="c" style="width:200px"></div>
   <div id="d" style="width:20%"></div>
</div> 

#a#b没有css width属性。如何计算像素中container个子元素的总宽度?

3 个答案:

答案 0 :(得分:11)

没有jQuery,就这样:

var children = document.getElementById('container').children;
var totalWidth = 0;

for (var i = 0; i < children.length; i++) {
    totalWidth += children[i].offsetWidth;
}

要检查您是否需要offsetWidth或其他内容,请参阅
Stackoverflow - Understanding offsetWidth, clientWidth, scrollWidth and -Height, respectively

答案 1 :(得分:1)

使用jQuery,你可以这样做:

var width = 0;

$('#container').children().each(function () {
    width += $(this).outerWidth(); 
    // change to .outerWidth(true) if you want to calculate margin too.
});


console.log(width);

答案 2 :(得分:0)

这段代码较短,可以使用vanilla-js:

const el = document.querySelector('.some-el')
const totalWidth = Object.values(el.childNodes).reduce((total, i) => total + i.offsetWidth, 0)
console.log(totalWidth)