web-dev-qa-db-ja.com

Uncaught TypeError:未定義のプロパティ 'nodeName'を読み取れません

この問題は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);
}

};

1行目-「Uncaught TypeError:Undefined of property 'nodeName' of undefined」と表示されます

しかし、これは私のデスクトップ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);
    },

エラー-キャッチされないTypeError:未定義のメソッド 'addEvent'を呼び出せません

17
David Nelband

エラーが「キャッチされていないTypeError:未定義のプロパティ 'nodeName'を読み取れません」で説明されているように、スクリプトがアクセスしようとすると、要素は利用できません。これは2つの方法で解決できます。

  • Document.readyでコードにラップしてみてください。
  • 要素にアクセスする前に、要素が使用可能かどうかを確認できます。これを行うには、if句を使用します。
19
Techie

これを解決しました。

Bootstrap.cssバージョン3.3.7とbootstrap.jsバージョン4.0.0を使用しています。

Bootstrap.jsをバージョン3.3.7に変更すると、問題が解決しました!!!

3
web_developer

スクリプトのみをロードしますすべての要素を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
Prasanth K C

class="content"を使用することが重要です。構造は次のとおりです。

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

このエラーがあった。 bootstrapのすべてのjsとcssを同じバージョンのままにして修正しました。私の場合、それぞれの最新バージョンを使用しました: https://getbootstrap.com/ docs/4.4/getting-started/download /

0
Marcos Barreto