如何在$ .each循环中添加结果?

时间:2013-05-23 07:10:58

标签: javascript jquery html

您好我正在尝试读取topmenu元素中每个项目的宽度并添加项目的宽度并指定为avariable。但是当我运行这个代码时,我正在警惕NaN 这段代码中的问题是什么:

$(document).ready(function(){
    $('.topmenu').each(function(menu){
        var btext = $(this).find('.baritem').width();
        alert(btext);
        var itemswidth = +itemswidth+btext;
        alert(itemswidth);
        //var width = getTextWidth(btext,"arial","40");
        //alert(width);     
    });
});

2 个答案:

答案 0 :(得分:11)

这一行

var itemswidth = +itemswidth+btext;

undefined添加到数字中。这给出了NaN。在进入循环之前,您需要将itemswidth初始化为0

$(document).ready(function(){
  var itemswidth = 0;
  $('.topmenu').each(function(){
     var btext = $(this).find('.baritem').width();
     itemswidth += btext;
     console.log(itemswidth); // better than alert
  });
});

对于弗洛里安:

$(document).ready(function(){
    var itemswidth = $('.topmenu .baritem').get().reduce(function(t,e){ 
        return t+$(e).width()
    }, 0);
    console.log(itemswidth);
});

答案 1 :(得分:0)

您可以通过以下方式轻松完成:

var reduce=Array.prototype.reduce;
var completeWidth=reduce.call($("div"), function(sum, elem){
    sum+=$(elem).width();
    return sum;
}, 0);

http://jsfiddle.net/DSUHG/