嗨,我正在尝试读取topmenu元素中每个项目的宽度,并添加项目的宽度并分配给变量。但是当我运行此代码时,我会收到警报
这段代码有什么问题:

$(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);
    });
});

最佳答案

这条线

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

07-24 17:55