Javascript 获取所有li项的组合宽度

Javascript 获取所有li项的组合宽度,javascript,jquery,arrays,Javascript,Jquery,Arrays,我创建了一个函数来获取导航菜单中所有li项的所有宽度,但下面的这个函数将所有项的宽度放入一个数组中 我不需要数组。我只需要一个总数,就是所有李的宽度之和 如何将数组更改为一个变量 多谢各位 var navigationItemsWidth = $.map($('.navigation-bar .nav li'),function(val){ return $(val).width(); }); 有很多种方式: $sum = 0; $('.navigation-bar .nav li'

我创建了一个函数来获取导航菜单中所有li项的所有宽度,但下面的这个函数将所有项的宽度放入一个数组中

我不需要数组。我只需要一个总数,就是所有李的宽度之和

如何将数组更改为一个变量

多谢各位

var navigationItemsWidth = $.map($('.navigation-bar .nav li'),function(val){
    return $(val).width();
});
有很多种方式:

$sum = 0;

$('.navigation-bar .nav li').each(function(){
   $sum = $sum + $(this).width();
});

alert($sum);

Map是一个创建数组的函数,您需要的是添加一个值。使用。每个:

如果要重复使用,请使用以下命令:

$.fn.totalWidth = function(){
    var navigationItemsWidth = 0;
    this.each(function(){
        navigationItemsWidth += $(this).width();
    });    
    return navigationItemsWidth;
}

var navigationItemsWidth = $('navigation-bar .nav li').totalWidth()
或者,如果您想重用该函数,您可以将其提取出来,而不是直接执行它,或者将其添加为jQuery插件

$.fn.totalWidth = function() {
 var total = 0;
 this.each(function() { total+=$(this).width();});
  return total;
};

var navigationItemsWidth = $('.navigation-bar .nav li').totalWidth();
这应该起作用:

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];
}

@shijin:你的编辑实际上让问题变得不那么清楚了。他不是在数li。@TrueBlueAussie好的,很抱歉-1:创建和迭代一个临时数组,对于宽度的简单求和,是非常浪费代码大小、运行时速度和内存使用的。请查看任何投票支持率较高的答案,以便更好地解决这个问题。是的,你是对的。我刚刚有了这些代码片段,因为我正在做一些需要数组的事情。只是想帮忙。。。但是当然,这不是最好的解决办法是的,抱歉这么苛刻。现在它只需要一个图像旋转木马就可以完成了:问:你打算把代码包装成一个即时函数吗?@TrueBlueAussie我想把它包装成一个函数,所以total在它之外是不可用的。然后我像这样执行函数,这样名称navigationItemsWidth才有意义,并且不想声明totalWidth函数。出于某种原因,我认为最好在另一个答案中创建这样一个函数,而不是编辑-这似乎是个坏主意,因为最高的答案同时进行了精确的编辑。所以我删除了我的另一个答案,把它移到这里。好吧,这在理论上是有意义的,然而,第一个代码只是用一个新变量navigationItemsWidth替换了另一个合计,所以范围合计的意义就没有那么大了,因为我看到你在另一个答案的同时编写了navigationItemsWidth:+1插件版本。只是一个样式注释,但是,jQuery对象的变量不是通常以$为前缀,以使它们脱颖而出吗?不适用于非jQueryvariables@TrueBlueAussie你教我一些东西,你有关于它的链接吗?@TheLittlePig我不认为有链接,这只是一个很好的实践,因为Javascript没有变量类型。至于我,我也喜欢用类型来定义我的变量前缀:arrName、strName、objName、intName等等…好的。。。谢谢你们两个,就像我说的,你们教会了我一些东西-@Karl AndréGagnon:匈牙利符号及其变体,即在变量名称前加上其类型是sooooo(上世纪):
$.fn.totalWidth = function() {
 var total = 0;
 this.each(function() { total+=$(this).width();});
  return total;
};

var navigationItemsWidth = $('.navigation-bar .nav li').totalWidth();
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];
}