猿问

错的有点莫名其妙

/**
 * Created by Administrator on 2017/7/12.
 */

window.onload=function(){
      waterfall('main','box');
};

function waterfall(parent,box) {
    //取出main下的所有class为box的元素
    var oParent = document.getElementById(parent);
    var oBoxs = getByClass(oParent, box);

    //console.log(oBoxs);
    //计算列数

    var oBoxW = oBoxs[0].offsetWidth;
    var cols = Math.floor(document.documentElement.clientWidth / oBoxW);
    //设置main的宽度
     oParent.style.cssText='width:'+oBoxW*cols+'px;margin:0 auto';

   // oParent.style.width = oBoxW * cols + "px";
    //oParent.style.margin = "0 auto";

    var hArr = [];
    for (var i = 0; i < oBoxs.length; i++) {
        if (i < cols) {
            hArr.push(oBoxs[i].offsetHeight);
        }else{
            var minH=Math.min.apply(null,hArr);
            var index=getMinIndex(hArr,minH);
            oBoxs[i].style.position="absolute";
            oBoxs[i].style.top=minH+"px";
            oBoxs[i].style.left=oBoxs[index].offsetLeft+"px";
            hArr[index]+=oBoxs[i].offsetHeight;
        }
    }
}
//找到所有class是box的元素
function getByClass(parent,clsName){
    var boxArr=[];//获取取得的box元素数组
    var oElements=parent.getElementsByTagName("*");//取父元素下的所有内容
    //对获取的元素进行遍历,找到传入的clsName
    for(var i=0;i<oElements.length;i++) {
        if (oElements[i].className == clsName) {
            boxArr[i].push(oElements[i]);
        }

    }
    return boxArr;
}


//获取当前最低高度的索引值
function getMinIndex(arr,val){
//    for(var i in arr){
//        if(arr[i]==val){
//            return i;
//        }
//    }

    for(var i=0;i<arr.length;i++){
        if(arr[i]==val){
            return i;
        }
    }
}



Uncaught TypeError: Cannot read property 'push' of undefined

    at getByClass (waterFallJSEX.js:46)

    at waterfall (waterFallJSEX.js:12)

    at window.onload (waterFallJSEX.js:6)


寒熙
浏览 1065回答 1
1回答

FSYu

if语句{}里写一个var index = i,然后把if语句{}里的i全部改成index
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答