我有一个菜单项如下:
<ul id="ulMyMenu">
<li >testitem</li>
<li >TestTestItem</li>
<li >TestTestItemItem Item</li>
</ul>
我希望将<li/>
内的所有<ul/>
的宽度加在一起。
我为此写了一个脚本:
var len=0;
$("#ulMyMenu").children("li").each(function(index,element){
len=len+ $(element).css("width");
});
console.log(len);
但结果是所有长度都被视为字符串并加在一起。这样的事情是我得到036px47px46px
。是否可以添加幅度而不是将其添加为字符串?
答案 0 :(得分:1)
在将width
纳入计算之前,尝试使用number
将.parseInt()
转换为$("#ulMyMenu").children("li").each(function(index,element){
len += parseInt($(element).css("width"),10);
});
,
.css('width')
FYKI:.parseInt()
总是将值作为字符串返回。
您可能会问为什么我应该专门使用+
。我无法使用Number()
/ NAN
转换它。?
如果您使用parseInt()
以外的方法进行转换,则 12px将为{{1}}
答案 1 :(得分:1)
尝试使用paresInt()
,如下所示:
len = len + parseInt( $(element).css("width"),10 );
完整代码:
$("#ulMyMenu").children("li").each(function(index,element){
len += parseInt( $(element).css("width"),10 );
});
在javascript / jquery中,无论何时处理数字,都使用parseInt
或parseFloat
,否则将值视为string
。