未捕获类型错误:无法读取未定义的属性“nodeName”

问题描述 投票:0回答:7

这个问题只出现在joomla -

我正在尝试在我的 joomla 网站上使用内容流插件

这是插件网站 - 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);
}

};

第一行 - 它显示“未捕获类型错误:无法读取未定义的属性‘nodeName’”

但是这个东西可以在我的桌面 html 文件和插件网站上运行!

为什么它在我的 joomla 网站上不起作用? 这不是一个冲突的事情 - 我使用无冲突并且我有其他可以工作的 jquery 插件

更新:

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

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

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

错误 - 未捕获类型错误:无法调用未定义的方法“addEvent”

jquery joomla undefined typeerror
7个回答
22
投票

正如错误所解释的“Uncaught TypeError:无法读取未定义的属性‘nodeName’”,当脚本尝试访问该元素时,该元素不可用。您可以通过两种方式解决这个问题。

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

3
投票

解决了这个问题。

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

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


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.. });
    

1
投票
使用

class="content"

很重要。结构应该是:

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

0
投票
出现此错误。我进行了更正,使引导程序的所有 js 和 css 保持相同的版本。 就我而言,我使用了每个版本的最新版本:

https://getbootstrap.com/docs/4.4/getting-started/download/


0
投票
我用 colspan 修复了。

<tfoot> <tr class="fw-bolder fs-6"> <th colspan="6" class="text-nowrap align-end">Total:</th> <th colspan="3" class="text-danger fs-3"></th> </tr> </tfoot>
共9栏,祝你好运。


0
投票
您可以在指定事件调用的函数中使用

event.preventDefault();

© www.soinside.com 2019 - 2024. All rights reserved.