您好我正在尝试读取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);
});
});
答案 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);