未捕获的TypeError:无法读取未定义的属性“nodeName”

时间:2012-02-20 14:16:25

标签: jquery joomla undefined typeerror

此问题仅出现在joomla中 -

我试图在我的joomla网站上使用contentflow插件

这是插件网站 - http://www.jacksasylum.eu/ContentFlow/

这是我的网站 - http://2-dweb.com/RND/

因为你可以看到它不起作用 - 它只是永远处于加载阶段

经过仔细检查,我发现此代码存在问题:

  if (this.content.nodeName == "IMG") {
    CFobj._imagesToLoad++;

    var foobar = function () { 
        CFobj._imagesToLoad--;
        this.image = this.content;
        this.setImageFormat(this.image);
        if ( CFobj.conf.reflectionHeight > 0) {
            this.addReflection();
        }
        this.initClick();
        CFobj._addItemCueProcess(true);
    }.bind(this);

    if (this.content.complete && this.content.width > 0)
        window.setTimeout(foobar, 100);
    else if (this.Browser.IE && !this.content.onload) {
        var self = this;
        var t = window.setInterval( function () {
            if (self.content.complete && self.content.width > 0) {
                window.clearInterval(t);
                foobar();
            }
        }, 10);
    }
    else
        this.content.onload = window.setTimeout(foobar, 100);
}
else {
    this.initClick();
    CFobj._addItemCueProcess(true);
}

};

第一行 - 它表示“Uncaught TypeError:无法读取未定义的属性'nodeName'”

但是这个东西适用于我的桌面html文件和插件网站上它自己!

为什么它不能在我的joomla网站上运行? 它不是冲突的东西 - 我使用无冲突,我有其他工作的jquery插件

更新

抢劫w帮我解决了这个错误: “将第一行更改为if(this.content&& this.content.nodeName ==”IMG“){。这解决了问题”

它确实如此,但现在又出现了另一个错误:

  initClick: function () {
        var cItem = this.clickItem;
        this[this._activeElement].addEvent('click', cItem, false);
    },

错误 - 未捕获的TypeError:无法调用未定义的方法'addEvent'

5 个答案:

答案 0 :(得分:16)

由于错误解释“未捕获的TypeError:无法读取未定义的属性'nodeName'”当脚本尝试访问该元素时,该元素不可用。您可以通过两种方式解决此问题。

  • 尝试使用document.ready包装到代码。
  • 您可以在访问之前检查该元素是否可用。要完成此操作,请使用if子句。

答案 1 :(得分:2)

解决了这个问题。

我正在使用bootstrap.css版本3.3.7和bootstrap.js版本4.0.0。

通过将bootstrap.js更改为版本3.3.7,我的问题已解决!!!

答案 2 :(得分:1)

在将所有元素加载到DOM 后,仅加载脚本。

您的脚本应该在页面底部调用,如下所示

<html>
  <head></head>

  <body>
    <!--HTML Elements here-->

    <script type="text/javascript" src="yourScript.js"></script>
  </body>
</html>

如果您使用jquery ,则可以将脚本文件包含在页面的任何位置(如果它包含在document.ready中,如下所示:

$(document).ready(function(){

  // your code here.. 

});

答案 3 :(得分:1)

使用class="content"非常重要。结构应该是:

 <div class="ContentFlow" id="cover-menu">
        <div class="flow">
            <div class="item" >
                <div class="content">
                   //your stuff
                </div>
            </div>
        </div>
 </div>

答案 4 :(得分:0)

出现此错误。我进行了更正,将引导程序的所有js和css保留为相同版本。 就我而言,我使用了每个的最新版本: https://getbootstrap.com/docs/4.4/getting-started/download/