为啥打印出来的index 属于未定义了?

来源:2-4 JavaScript实现瀑布流布局中图片排序

qq_傻呆_0

2016-03-29 23:53

window.onload=function(){
waterfall("main","box");
}
function waterfall(parent,box){
//将main下的所有class为box取出来
var oParent=document.getElementById(parent);
var oBoxs=getByClass(oParent,box);
//计算页面可以放的列数
var oBoxW=oBoxs[0].offsetWidth;
var clos=Math.floor(document.documentElement.clientWidth/oBoxW);
//设置mian的宽度,设置对齐方式

oParent.style.cssText='width:'+oBoxW*clos+'px;margin:0 auto';

var hArr=[];
for (var i=0 ;i<oBoxs.length;i++){
var hArr1=oBoxs[i].offsetHeight;
if(i<clos){
hArr[i] = hArr1;
 //hArr.push(oBoxs[i].offsetHeight);
}else{
var minH=Math.min.apply(null,hArr);    
//math.min不能用于数组,所以要借助于apply方法:apply用来改变方法中this的指向
var index = getMinindex(hArr,minH);//获取索引值  
console.log(index);
oBoxs[i].style.position='absolute';
oBoxs[i].style.top=minH+'px';
oBoxs[i].style.left=oBoxW*index+'px';
hArr[index]+=oBoxs[i].offsetHeight;
}

}
console.log(hArr);
}
//根据class获取元素
function getByClass(parent,classname){
var boxArr=new Array(),
oElements=parent.getElementsByTagName("*");
for(var i=0;i<oElements.length;i++){
if(oElements[i].className==classname){
boxArr.push(oElements[i]);

}
}
return boxArr;
}
function getMinindex(arr,val){
 for(var i in val){
if(arr[i]==val){
return i;
}
 }
}


写回答 关注

1回答

  • PdpdPdpd
    2016-03-30 11:19:13

    getMinindex(arr,val) 函数里面,for(var i in val) 改成 for(var i in arr)


瀑布流布局

瀑布流布局是网站比较流行的一种布局方式,教你实现三大方式

97759 学习 · 736 问题

查看课程

相似问题