我创建了一个函数来获取导航菜单中所有li
项的所有宽度,但是这个函数(下面)将所有项的宽度放入一个数组中。
我不需要数组。我只需要一个总数,即所有li宽度的总和。
如何将数组更改为一个变量?
谢谢。
var navigationItemsWidth = $.map($('.navigation-bar .nav li'),function(val){
return $(val).width();
});
答案 0 :(得分:4)
Map是一个创建数组的函数,你想要的是添加一个值。使用.each
:
var navigationItemsWidth = 0;
$('.navigation-bar .nav li').each(function(){
navigationItemsWidth += $(this).width();
});
如果您想重复使用它,请使用:
$.fn.totalWidth = function(){
var navigationItemsWidth = 0;
this.each(function(){
navigationItemsWidth += $(this).width();
});
return navigationItemsWidth;
}
var navigationItemsWidth = $('navigation-bar .nav li').totalWidth()
答案 1 :(得分:3)
很多方法:
$sum = 0;
$('.navigation-bar .nav li').each(function(){
$sum = $sum + $(this).width();
});
alert($sum);
答案 2 :(得分:2)
var navigationItemsWidth = (function(){
var total = 0;
$('.navigation-bar .nav li').each(function() { total+=$(this).width();});
return total;
})();
或者,如果您想重用该功能,可以将其解压缩而不是立即执行,或将其添加为jQuery插件
$.fn.totalWidth = function() {
var total = 0;
this.each(function() { total+=$(this).width();});
return total;
};
var navigationItemsWidth = $('.navigation-bar .nav li').totalWidth();
答案 3 :(得分:-1)
这应该有效:
var count = $('.navigation-bar .nav li').size();
var list_items_width=array();
for (var i = 0; i < count; i++) {
list_items_width.push($('.navigation-bar .nav li').eq(i).width());
}
var total_width = 0;
for (var j = 0; j < count; j++) {
total_width = total_width + list_items_width[j];
}