IE: 'тип узла' является пустым или не объект

У меня есть эта проблема о моем веб-сайте в IE (6,7,8):

'тип узла' является пустым или не объект

Ошибка относится к "f.nodeType" свойству. В основном f не определен, таким образом, проблема прежде, но я не могу зафиксировать его.

(от отладки панели инструментов разработчика IE это, кажется, эта строка, которая бросает ошибку) (autocolumn.min.js line 13 расширенный ниже для удобочитаемости)

Страница по http://www.donatellabernardi.ch/drupal

function split($putInHere,$pullOutHere,$parentColumn,height){
  if($pullOutHere.children().length){
    $cloneMe=$pullOutHere.children(":first");
    $clone=$cloneMe.clone(true);
    if($clone.attr("nodeType")==1&&!$clone.hasClass("dontend")){
    ^^^^^^^^^^^^^^^^^^^^^^^^^^ Chokes on

      $putInHere.append($clone);
      if($clone.is("img")&&$parentColumn.height()

6
задан John 10 October 2015 в 19:28
поделиться

2 ответа

Используя букмарклет "Firebug lite" (вы можете получить его здесь: http://getfirebug.com/firebuglite ), я смог определить место, где действительно возникает ошибка.

Похоже, что корень проблемы не в коде, который вы извлекли, а в самом jQuery.

Я заметил, что вы используете jQuery версии 1.2.6. Проблема заключается в методе clone-метода этой версии. Это приводит к ошибке в этой строке вашего кода:

$clone=$cloneMe.clone(true);

Я мог бы дать вам больше деталей, где именно происходит ошибка, но я не думаю, что это решит вашу проблему. В любом случае, это не очень хорошая идея - создавать обходной путь для несовершенного jQuery-кода. Я бы скорее рекомендовал попробовать более свежую версию jQuery (после беглого взгляда я увидел, что там метод клонирования реализован по-другому) и посмотреть, решит ли это вашу проблему.

EDIT: Извините, это не эта строка

$clone=$cloneMe.clone(true);

а вот эта:

$cache.append($(this).children().clone(true));

(строка 42 в autocolumn.js)

4
ответ дан 17 December 2019 в 07:00
поделиться

Что произойдет, если вместо этого вы воспользуетесь $ clone.get (0) .nodeType === 1 ?

Рекомендуется использовать оператор строгого равенства === вместо == , если тип значения известен и неявное преобразование не требуется. Оператор строгого равенства также должен работать, даже если nodeType будет undefined, null или «не объект»

.get (0) , вероятно, не нужен. Я просто хотел убедиться, что работаю непосредственно с Element, а не над jQuery-Instance.

0
ответ дан 17 December 2019 в 07:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: