2015-09-05 3 views
2

В настоящее время я работаю над проектом, где я использую следующий ползунок в Overal сайте:Uncaught TypeError: Не удается прочитать свойство «содержит» нулевых

S3Slider

Для конкретной страницы I В настоящее время я работаю над тем, чтобы использовать Walter Zorns Drag &. (Link Here)

Теперь, когда я начинаю использовать функцию SET_DHTML, которая необходима для использования D & D библиотека, мой слайдера начинает бросать ошибки:

Uncaught TypeError: Cannot read property 'contains' of null

данные Номер строки , посылает меня к следующей строке:

if($(itemsSpan[currNo]).css('bottom') == 0) {

Что лежит в следующем фрагменте кода:

s3Slider = function(id, vars) {  

    var element  = this; 
    var timeOut  = (vars.timeOut != undefined) ? vars.timeOut : 2000; 
    var current  = null; 
    var timeOutFn = null; 
    var faderStat = true; 
    var mOver  = false; 
    var items  = $("#sliderContent .sliderTopstory"); 
    var itemsSpan = $("#sliderContent .sliderTopstory span"); 

    items.each(function(i) { 

     $(items[i]).mouseover(function() { 
      mOver = true; 
     }); 

     $(items[i]).mouseout(function() { 
      mOver = false; 
      fadeElement(true); 
     }); 

    }); 

    var fadeElement = function(isMouseOut) { 
     var thisTimeOut = (isMouseOut) ? (timeOut/2) : timeOut; 
     thisTimeOut = (faderStat) ? 10 : thisTimeOut; 
     if(items.length > 0) { 
      timeOutFn = setTimeout(makeSlider, thisTimeOut); 
     } else { 
      console.log("Poof.."); 
     } 
    } 

    var makeSlider = function() { 
     current = (current != null) ? current : items[(items.length-1)]; 
     var currNo  = jQuery.inArray(current, items) + 1 
     currNo = (currNo == items.length) ? 0 : (currNo - 1); 
     var newMargin = $(element).width() * currNo; 
     if(faderStat == true) { 
      if(!mOver) { 
       $(items[currNo]).fadeIn((timeOut/6), function() { 
       /* This line -> */if($(itemsSpan[currNo]).css('bottom') == 0) { 
         $(itemsSpan[currNo]).slideUp((timeOut/6), function() { 
          faderStat = false; 
          current = items[currNo]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        } else { 
         $(itemsSpan[currNo]).slideDown((timeOut/6), function() { 
          faderStat = false; 
          current = items[currNo]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        } 
       }); 
      } 
     } else { 
      if(!mOver) { 
       if($(itemsSpan[currNo]).css('bottom') == 0) { 
        $(itemsSpan[currNo]).slideDown((timeOut/6), function() { 
         $(items[currNo]).fadeOut((timeOut/6), function() { 
          faderStat = true; 
          current = items[(currNo+1)]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        }); 
       } else { 
        $(itemsSpan[currNo]).slideUp((timeOut/6), function() { 
        $(items[currNo]).fadeOut((timeOut/6), function() { 
          faderStat = true; 
          current = items[(currNo+1)]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        }); 
       } 
      } 
     } 
    } 

    makeSlider(); 

}; 

Зачем возникает эта ошибка?

Спасибо.

+0

У меня есть хрустальный шар. Я собираюсь спросить сейчас о вашем коде, и если я получу очень хорошие подарки в свой день рождения. –

+0

Будет немного больше кода, чем только одна строка. Может быть, это файл? Или показать нам хотя бы определение itemsSpan? –

+0

@MikeS. Я сделал, теперь я включил больше кода. –

ответ

2

Я думаю, ваша проблема заключается в этих двух строках:

var currNo = jQuery.inArray(current, items) + 1 
currNo = (currNo == items.length) ? 0 : (currNo - 1); 

Если JQuery не найти элемент в массиве, он собирается отправить вам значение -1 (в верхней строке), который затем будет изменено на 0, потому что вы добавили 1. Теперь, если currNo равно 0 во второй строке, он изменит его на -1, что вернет вам undefined. Может быть, попытаться изменить его, чтобы сделать это вместо того, чтобы:

var currNo = jQuery.inArray(current, items); 
if (currNo === items.length - 1) { 
    currNo = 0; 
} 

Я не уверен, это проблема, но я могу видеть это становится проблемой, если это не проблема, вы сейчас имеете.

+0

Спасибо за это, он решил ошибку! Но теперь, когда я загружаю страницу, я вижу ее, а затем через пару секунд она превращается в белую страницу. Возможно, это связано с этой проблемой? –

+0

Это не связано с ошибкой, которую вы получали. Я не думаю, что это больше связано с функцией fadeElement с установленным вами таймаутом. –

0

Просто принимая дикое предположение здесь, но причина, по которой бросают ошибка, потому что это называют:

null.contains('something')

Результаты в следующей ошибки:

> null.contains('something') 
TypeError: Cannot read property 'contains' of null 

Другое причина, кроме того, что элемент null будет иметь место, когда вызывается следующее:

jQuery.contains('something')

Действительно ли jQuery равен null, если вы открываете консоль браузера?

Загружено jQuery перед его использованием?

Смежные вопросы