0

Detaild информация об ошибкеIE ошибка простой JQuery

Useraget: Mozilla/4.0 (совместимый; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath. 1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Tiemstamp: Вт, 25 мая 2010 8:54:11 UTC

Сообщение: Объект не поддерживает это свойство или метод Ряд: 208 C haracter: 3 Код: 0

В строке 208 я perpage = $("#perpage").val();

Что здесь не так? Это происходит только в IE8, Firefox работает безупречно. У кого-нибудь есть идеи?

ответ

2

Проблема, кажется, что я имел такое же имя для JavaScript переменная и идентификатор элемента. Когда я переименовал переменную в , vperpage все это работало и в IE.

vperpage = $("#perpage").val(); //Seem to work in Internet Explorer 

Любой, кто может подтвердить это странное поведение в IE?

Отредактировано 2010-05-25 13:57 GMT + 1

Так же, как @bobince говорит и связь, которую он отправил, IE видит элемент и переменную, как то же самое, если мы не объявить переменную в нашем JavaScript.

var perpage = $("#perpage").val(); /*Works in Internet Explorer */ 
perpage = $("#perpage").val(); /*Doesn't work in Internet Explorer since 
           we already have a element with the id perpage*/ 

Это может сбивать с толку, поскольку сам JavaScript автоматически объявляет переменную, которая не существует, если мы дадим ей значение. Но это, как мы заметили в вышеприведенной проблеме, не работает, когда у нас уже есть элемент с одним и тем же идентификатором. Итак, плохая практика не всегда декларировать свои собственные переменные :) Урок выучен!

+2

Да, это хорошо известно, поэтому вы всегда должны использовать 'var'. См. Http://stackoverflow.com/questions/2717240/javascript-function-works-in-ff-opera-etc-fails-in-ie8-how-to-fix – bobince

+0

Отличный bobince. Спасибо за ссылку! – jamietelin

1

Является ли элемент с id perpage чем-либо, кроме полей ввода формы? Если да, то вы должны использовать:

var perpage = $("#perpage").html(); // for html contents of the element 
var perpage = $("#perpage").text(); // for textual contents of the element 

Это также может быть проблематичным, если вы назначили идентификатор #perpage более чем из одного элемента.

+0

perpage - это выпадающее меню, а идентификатор используется только один раз. – jamietelin

+0

@jamietelin: Это не было сказано раньше, спасибо за разъяснение этого. – Sarfraz

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