Javascript .width()返回的像素太多

Javascript .width()返回的像素太多,javascript,jquery,Javascript,Jquery,我有一个部门: <div class="frame" id="layer1"> ... </div> 但以下是我的结果: $(".frame").filter(":first").width(); // 384 $(".frame").filter(":first").outerWidth(); // 384 $(".frame").filter(":first").innerWidth(); // 384 我知道它们都是一样的,因为我的填充和边距都是0,但是这个

我有一个部门:

<div class="frame" id="layer1"> ... </div>
但以下是我的结果:

$(".frame").filter(":first").width(); // 384
$(".frame").filter(":first").outerWidth();  // 384
$(".frame").filter(":first").innerWidth();  // 384

我知道它们都是一样的,因为我的填充和边距都是0,但是这个默认的4px是从哪里来的呢?

问题解决了,谢谢你的回答-很有帮助

有别的东西在方程中做加法。即使问这个我也觉得很愚蠢,但是你的回答和问题确实帮我弄清了真相!我应该发布整个脚本:

var layers = $(".frame");
console.log(layers);

var totalWidth = layers.size() + layers.filter(":first").innerWidth();
console.log(totalWidth);

正如您所看到的,问题在于
layers.size()+
,它应该是乘法而不是加法,我早就应该看到它了。

它得到了解决,感谢您的回答-它很有帮助

有别的东西在方程中做加法。即使问这个我也觉得很愚蠢,但是你的回答和问题确实帮我弄清了真相!我应该发布整个脚本:

var layers = $(".frame");
console.log(layers);

var totalWidth = layers.size() + layers.filter(":first").innerWidth();
console.log(totalWidth);

正如您所看到的,问题在于
layers.size()+
,它应该是乘法而不是加法,我早就应该看到它了。

FireBug/Chrome元素检查器报告的宽度是多少?试试这个:确保它精确到380px,即使有填充。我在Chrome、Firefox中得到380 px,IE:还要注意,不需要执行
.filter(“:first”)
,jQuery getter总是只从集合中的第一个元素获取。(如果您确实需要这样做,
.first()
而不是
。filter(“:first”)
可能是更好的选择,或者
.eq(0)
)对我来说,它在jsfiddle和Chrome中返回380。您使用的浏览器是什么?这种现象是该浏览器特有的还是在其他浏览器中也会出现?FireBug/Chrome element inspector报告的宽度是多少?尝试以下方法:确保它精确到380px,即使有填充。我在Chrome、Firefox和IE中得到380:还请注意,不需要执行
。过滤器(“:first”)
,jQuery getter总是只从集合中的第一个元素获取。(如果确实需要这样做,
.first()
而不是
。filter(“:first”)
可能是更好的方法,或者
.eq(0)
)对我来说,它在JSFIDLE和Chrome中返回380。什么浏览器您是否正在使用该浏览器?这种现象是该浏览器独有的还是在其他浏览器中也会出现?“请阅读相关编辑以获得结论。“这很好。正确的方法是将问题保留为问题,并将答案张贴在答案中。或者在这种情况下,因为这只是一个错误,你可以标记你的问题,要求版主完全删除它,如果你愿意的话。“请阅读问题中的编辑以获得结论。”这样做完全可以。正确的方法是将问题保留为问题,并将答案张贴在答案中。或者在这种情况下,因为这只是一个错误,你可以标记你的问题,要求版主完全删除它,如果你愿意的话。