问答详情
源自:2-4 JavaScript实现瀑布流布局中图片排序

代码有错误


<script>

window.onload=function(){

waterfull('main','box');

}

function waterfull(parent,box){

//把父元素中class为box额元素取出来

var oparent=document.getElementById(parent);

var col=getbyclass(oparent,box);

//计算一共多少列(页面宽度/每一个盒子的宽度)

var boxw=col[0].offsetWidth;

var bol=Math.floor(document.documentElement.clientWidth/boxw);

oparent.style.cssText='width'+boxw*bol+'px;margin:0 auto';

var harr=new Array();//存放高的数组

for(var i=0;i<col.length;i++){

if(i<bol){

  harr.push(col[i].offsetHeight);

}

else{

   var minh=Math.min.apply(null,harr);

var index=getminhindex(harr,minh);

col[i].style.position='absolute';

col[i].style.top=minh+'px';

col[i].style.left=boxw*index+'px';

harr[index]+=col[i].offsetHeight;

}

}

}

function getbyclass(parent,clsName){

var boxs=new Array();//用来存放classname为box的盒子

var oElements=parent.getElementsByTagName('*');

for(var i=0;i<=oElements.length;i++){

if(oElements[i].className==clsName){

boxs.push(oElements[i]);

}

}

return boxs;

}

function getminhindex(arr,val){

for(var i in arr){

if(arr[i]==val){

return i;

}

}

}

</script>

有错误,而且一直显示className使用有误

提问者:qq_耿阳阳_0 2017-01-03 16:54

个回答

  • 咖啡学者
    2017-04-02 01:24:11
    已采纳

    你的错误就在于getbyclass这个函数中的for循环

    把for(var i=0;i<=oElements.length;i++)改为 for(var i=0; i<oElements.length; i++)



  • 给我一杯咖啡
    2017-01-04 12:59:10

    可能是脚本执行顺序的原因,试着把脚本放在body下面。