Javascript 获取文本节点的宽度
一些(JS修改的)HTML可能如下所示:Javascript 获取文本节点的宽度,javascript,width,Javascript,Width,一些(JS修改的)HTML可能如下所示: <div style="width: 50px;">1,234,567</div> 1234567 如何检测文本节点是否比容器宽?灵感来自: 1,234,567 1,234,567 要检测的JavaScript(无jQuery): var divs = document.getElementsByTagName('div'); var i, div, overflowing; for (i=0; i<divs.le
<div style="width: 50px;">1,234,567</div>
1234567
如何检测文本节点是否比容器宽?灵感来自:
1,234,567
1,234,567
要检测的JavaScript(无jQuery):
var divs = document.getElementsByTagName('div');
var i, div, overflowing;
for (i=0; i<divs.length; i++) {
div = divs[i];
overflowing = div.offsetWidth < div.scrollWidth;
console.log(overflowing);
}
var divs=document.getElementsByTagName('div');
变量i,div,溢出;
对于(i=0;我猜这将涉及到克隆文本节点,并将其放入没有固定宽度的容器中,或者如果您可以更改标记,则将文本内容包装在
中,并使用其宽度。可能的重复。只需使用scrollWidth
而不是看起来有用的scrollHeight
@MattBalll、 但是我在元素上没有隐藏溢出。我必须添加它吗,或者它在没有溢出设置的情况下工作吗?它在没有溢出:隐藏
的情况下工作。哦,那太好了。如果你能回答这个问题,我很乐意接受。在Firefox中,这两种情况的结果都是false
,正如我想象的那样。因为它是允许明显溢出,就不会有任何东西可以滚动。@amnotiam这就是为什么我把边框放进去的部分原因。使用Chrome,第一个div上的右边框穿过6
:相应地,代码只为第一个div打印true
。是的,我理解为什么边框在那里。我曾经让它更容易一些我的观点是Firefox给出了一个不同的结果。代码为两个div打印false
,因为当溢出可见时,scrollWidth
等于offsetWidth
。我假设Firefox的结果是正确的,因为当溢出可见时内容无法滚动。
var divs = document.getElementsByTagName('div');
var i, div, overflowing;
for (i=0; i<divs.length; i++) {
div = divs[i];
overflowing = div.offsetWidth < div.scrollWidth;
console.log(overflowing);
}