为什么我在这个js代码中得到'无法读取'null'的属性'长度'?

时间:2014-10-18 23:39:23

标签: javascript

我正在尝试将此示例http://tympanus.net/codrops/2013/07/02/loading-effects-for-grid-items-with-css-animations/comment-page-3/#comments与我自己的网站集成。

基本上我正在尝试使用anonOnScroll.js来使用masonry.js(我自己也在使用它)来让我的图像淡入。

<script src="AnimOnScroll.js"></script>
    <script>
      new AnimOnScroll( document.getElementById( '.container' ), {
        minDuration : 0.4,
        maxDuration : 0.7,
        viewportFactor : 0.2
      } );
    </script>

在Chrome控制台中,我收到以下错误。

Uncaught TypeError: Cannot read property 'length' of nul      imageLoaded.js

这是为imageLoaded.js

中的错误突出显示的代码
// turn element or nodeList into an array
function makeArray( obj ) {
  var ary = [];
  if ( isArray( obj ) ) {
    // use object if already an array
    ary = obj;
  } else if ( typeof obj.length === 'number' ) {
    // convert nodeList to array
    for ( var i=0, len = obj.length; i < len; i++ ) {
      ary.push( obj[i] );
    }
  } else {
    // array of single index
    ary.push( obj );
  }
  return ary;
}

我的css结构是这样的:

<div class="container">
    <div class="grid_4"></div>
    <div class="grid_4"></div>
    <div class="grid_4"><div>
</div>

不确定该去哪里,我是否需要将'number'更改为我班级的名字?很遗失,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

(没关系,我刚刚意识到makeArray是库代码,仍然留下这个错误解释的答案)

问题在于:

if ( typeof obj.length === 'number' )

如果objnull,则obj.length会引发此异常。

修复将是:

if ( obj && typeof obj.length === 'number' )