为了账号安全,请及时绑定邮箱和手机立即绑定

出现Cannot read property 'style' of undefined错误

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

function waterfall(parent,box){
    //获取class为box的元素
    var oParent = document.getElementById(parent);
    var oBox= getByClass(oParent,box);
    //console.log(oBox.length);
    // 计算页面显示的列数(页面宽度/box宽)
    var oBoxw = oBox[0].offsetWidth;
    var cols =Math.floor(document.documentElement.clientWidth/oBoxw);
    //设置main的宽度
    oParent.style.cssText='width:'+oBoxw*cols+'px;margin:0 auto';
    var hArr=[];
    for(var i=0;i<oBox.length;i++){
        if(i<cols){
        hArr.push(oBox[i].offsetHeight);
        }
    }
    //console.log(hArr);
    var minH=Math.min.apply(null,hArr);
    //console.log(minH);
    var index = getMinH(hArr,minH);
    oBox[i].style.position='absolute';
    oBox[i].style.top=minH+'px';
    oBox[i].style.left=oBoxw*index+'px';
    hArr[index]+=oBox[i].offsetHeight;
}

//根据class获取元素
function getByClass(parent,clsName){
    var boxArr = [];
    oElements = parent.getElementsByTagName('*');
    for(var i=0;i<oElements.length;i++){
        if(oElements[i].className==clsName){
            boxArr.push(oElements[i]);
        }
    }
    return boxArr;
}
function getMinH(arr,val){
    for(var i in arr){
        if (arr[i]==val){
            return i;
        }
    }
}

25行出现错误,是哪里出的问题?


正在回答

1 回答

oBox[i]的i都没了,for(var i=0;i<oBox.length;i++){

        if(i<cols){

        hArr.push(oBox[i].offsetHeight);

        }

    }

变量是在for循环内定义的,你的i都跑变量外面来了,怎么会有,还有if if(i<cols),下面的代码不应该是else里面吗

0 回复 有任何疑惑可以回复我~
#1

zk785 提问者

非常感谢!
2016-05-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

出现Cannot read property 'style' of undefined错误

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信