我创建了一个循环遍历一组产品的函数,并将其复制区域的高度设置为该集合中最高复制区域的高度。
这是我的代码:
function productCopyHeight(){
//make sub range product text sections the same height
if($('.sub-range').length){
$('.sub-range').each(function(){
var itemHeight = 0;
$(this).children('.product-item').children('.copy').each(function(i){
var thisItemHeight = $(this).height();
console.log(thisItemHeight + ' > ' + itemHeight)
if(thisItemHeight > itemHeight){
var itemHeight = thisItemHeight;
}
});
$(this).children('.product-item').children('.copy').css('height', itemHeight);
})
}
}
当我记录它时,它在每个循环之前定义时将itemHeight变量显示为undefined。
答案 0 :(得分:1)
那是因为你在内部each
的回调中用同一名称声明了另一个变量。这里:
if(thisItemHeight > itemHeight){
var itemHeight = thisItemHeight;
}
该变量与循环前的变量不同,该变量也被提升到函数的顶部。该变量的值为undefined
,因为您在为其赋值之前使用它。
您应该使用已有的变量而不是创建另一个变量:
if(thisItemHeight > itemHeight){
itemHeight = thisItemHeight;
}