问答详情
源自:2-3 JavaScript实现瀑布流布局中图片定位

获取Obox[0].offsetWidth报错,不知道哪里出的问题,求大神指点,谢谢

代码是按老师来的,可是还是报错呢:
http://img.mukewang.com/566d09a30001491205770541.jpg

提问者:tlx6550 2015-12-13 14:02

个回答

  • 慕男婶
    2015-12-13 14:14:26
    已采纳

    function getClass(parrent,cls){
       var boxArr = new Array();
       var elements = parrent.getElementsByTagName("*");
       for (var i = 0; i < elements.length; i++) {
          if (elements[i].className==cls) {
             boxArr.push(elements[i]);
          }
       }
       // 符合条件的节点数组你没有返回
       return boxArr;
    }

    改成这样就可以了。主要是你没有返回的问题。

  • 无语凝噎3761381
    2016-10-17 10:35:51

    返回了也没用,

  • 无夜的章
    2016-06-17 12:43:24

    忘记返回了,,,谢谢。。

  • 西宏柿
    2016-04-04 23:01:51

    我也是卡在这里,谢谢

  • tlx6550
    2015-12-13 15:18:31

    原来如此,忘记返回了,O(∩_∩)O谢谢

  • 李晓健
    2015-12-13 14:20:17

    楼上正解

  • tlx6550
    2015-12-13 14:10:48

    <script>

    window.onload=function(){

    watarFlall('main','box');

    };

    function watarFlall(parrent,box){

    //将main 下的所有 class为 box的 元素取出来;

    var Oparrent = document.getElementById(parrent);

    var Obox = getClass(Oparrent,box);

    //设置main居中

    var oBoxW = Obox[0].offsetWidth;

    var cols = Math.floor(document.documentElement.clientWidth/oBoxW);

    Oparrent.style.cssText='width:'+oBoxw*cols+'px;margin:0 auto';


    }


    function getClass(parrent,cls){

    var boxArr = new Array();

    var elements = parrent.getElementsByTagName("*");

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

    if (elements[i].className==cls) {

    boxArr.push(elements[i]);

    }

    }

    }

    </script>


  • 李晓健
    2015-12-13 14:06:45

    你的Obox是一个空数组,所以 Obox[0]  就是undefined  然后你再 Obox[0].offsetWidth;就报错了,你可以给一下你的完整代码,大家帮你看一下 为什么Obox是空数组