Uncaught TypeError: Невозможно прочитать свойство 'nodeName' из неопределенного - PullRequest
14 голосов
/ 20 февраля 2012

эта проблема появляется только в joomla -

я пытаюсь использовать плагин contentflow с моим сайтом 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);
}

};

с первой строкой - там написано "Uncaught TypeError: Невозможно прочитать свойство 'nodeName' of undefined"

, но эта вещьработает на моем настольном html-файле и на сайте плагина самостоятельно!

почему это не работает на моем сайте joomla?это не конфликтная вещь - я использую без конфликтов, и у меня есть другие плагины jquery, которые работают

update:

rob w помог мне с этой ошибкой: "Измените первую строку на if (this.content && this.content.nodeName == "IMG") {. Это решает проблему "

, и это произошло, но теперь появляется другая ошибка:

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

ошибка - UncaughtTypeError: Невозможно вызвать метод 'addEvent' из неопределенного

Ответы [ 4 ]

16 голосов
/ 10 декабря 2013

Как объясняет ошибка «Uncaught TypeError: Невозможно прочитать свойство 'имя-узла' неопределенного элемента» Элемент недоступен, когда скрипт пытается получить к нему доступ.Вы можете решить это двумя способами.

  • Попробуйте обернуть для кода с document.ready.
  • Вы можете проверить, доступен ли элемент, прежде чем получить к нему доступ.Чтобы сделать это, используйте предложение if.
2 голосов
/ 02 июля 2018

Решено.

Я использую bootstrap.css версии 3.3.7 и bootstrap.js версии 4.0.0.

При изменении bootstrap.js до версии 3.3.7 моя проблема получиларешена !!!

1 голос
/ 14 февраля 2014

Важно, чтобы вы использовали class="content".Структура должна быть:

 <div class="ContentFlow" id="cover-menu">
        <div class="flow">
            <div class="item" >
                <div class="content">
                   //your stuff
                </div>
            </div>
        </div>
 </div>
1 голос
/ 14 декабря 2013

Загрузка вашего скрипта только после загрузки всех элементов в 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.. 

});
...