Объект не поддерживает это свойство или метод

#jquery #wordpress #e-commerce

#jquery #wordpress #электронная коммерция

Вопрос:

Как указано, я получаю эту ошибку на своем сайте. Я проверил через инструмент отладки разработчика IE8, и я получил следующий код, который вызвал ошибку.

 <!-- slider js code start -->
<script type="text/javascript">
$().ready(function() {
    if(eval(document.getElementById('coda-slider-1')))
    {
        $('#coda-slider-1').codaSlider();
        //jQuery.noConflict(); var $j = jQuery;
    }
}); 
  

Я включил скриншот из инструмента отладки Chrome.

http://img857.imageshack.us/i/javaerror.jpg

http://img204.imageshack.us/i/javaerror2.jpg

Пожалуйста, помогите мне разобраться.

Спасибо.

Комментарии:

1. является ли пустое $() опечаткой? Кроме того, зачем вызывать eval?

2. что должна делать эта строка: if(eval(document.getElementById('coda-slider-1'))) ?

3. Есть… Является ли этот код eval элементом DOM?

Ответ №1:

Попробуйте это вместо:

 $(function() {
    if($('#coda-slider-1').size())
    {
        $('#coda-slider-1').codaSlider();
        //jQuery.noConflict(); var $j = jQuery;
    }
}); 
  

В вашем исходном коде сказано «ничего не выделять с помощью jQuery и применить к нему этот готовый обработчик». Правильный синтаксис для длинных строк был бы:

 $(document).ready(function() { ...
  

Также обратите внимание, что я удалил eval , потому что его никогда не следует использовать, если только этого нельзя избежать.

Обновить

Глядя на ваши скриншоты с ошибками, кажется, что jQuery не определен (по крайней мере, не с $ псевдонимом. Вы включили скрипт на свою страницу? Если да, вызываете ли вы jQuery.noConflict() перед привязкой вашего готового обработчика?

Попробуйте поместить этот тег script как над опубликованным вами кодом, так и над тегом script для слайдера coda:

 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
  

ОБНОВЛЕНИЕ 2

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

Комментарии:

1. Я не хочу жаловаться, но теперь я дважды проголосовал против без объяснения причин. Я не возражаю, если вы думаете, что я неправ, но я был бы признателен, если бы вы знали, в чем проблема.

2. Эндер, ты не мог бы помочь мне исправить эту проблему? Я действительно понятия не имею, что делать, поскольку я не знаком с кодированием. Не могли бы вы оставить свой адрес электронной почты, чтобы я мог связаться с вами? Я был бы очень признателен, если бы вы могли мне помочь. Заранее благодарю вас.

3. @Jone — Извините, но я не собираюсь публиковать свой адрес электронной почты в публичном пространстве, подобном этому. Попробуйте следовать предложениям, которые я сделал.

4. Эндер, я подписался на твой твиттер, пожалуйста, подписывайся и на меня, чтобы я мог отправлять тебе сообщения. Спасибо.

5. Еще раз, извините, но нет. Что не так с использованием этого потока комментариев?

Ответ №2:

Я предполагаю, что вы пытаетесь проверить существование coda-slider-1 ?

Нет необходимости использовать eval, и если вы используете jquery, можете также выбрать элемент с помощью jquery:

 if($("#coda-slider-1").length>0){

}
  

Ответ №3:

Проблемы:

  • $().ready не рекомендуется. Используйте $(document).ready(function или simple $(function .

  • Зачем использовать document.getElementById , если jQuery уже выполняет поиск элементов с помощью селекторов кроссбраузерным способом? Просто сделайте $("#some").length , чтобы увидеть, существует ли оно.

  • Также в вашем случае, я думаю, хорошо убедиться, что codaSlider() метод загружен перед вызовом.

Исправленный код:

 $(function() {
    if ($("#coda-slider-1").length > 0 amp;amp; $("#coda-slider-1").codaSlider) {
        $('#coda-slider-1').codaSlider();
    }
});