FF4 (и не только) не находит объект по имени.
Задана таблица с 3-мя столбцами.
Шапка выглядит так: <tr><td><input type='button' value='Фільтрувати' onClick=funFilter(lstAuthor.value,lstTheme.value)> </td><td><select name='lstAuthor'><option value='---' selected>---<option value=...</select></td><td><select name='lstTheme'><option value='---' selected>---<option value=...</select></td></tr> Скрипт выполянет фильтрацию. Когда был написан html код и скрипт, в 6-м осле заработало практически сразу на ура, а проэкт был отложен в очередь в связи с низким приоритетом. И вот совсем недавно выяснилось, что 4-я лиса ругается: "lstAuthor is not defined", точно так же ругается 16-я опера (в 12-й работает!). Помогите отрыть собаку. |
А почему это вообще должно работать? Объясни пожалуйста.
|
А почему бы и нет?)
Почему это не должно работать?) Дело в том, что документ писался по наитию, методом "научного тыка". Опыт разработки на ЯВУ подсказывал что если у объекта есть имя, можно попытаться внаглую обратиться к нему по имени. Как в Delphi, например, или VB. Обратился. Ишак возражать не стал. И до сих пор не возражает. Ну, я с чистой совестью и чувством выполненого долга забы(и)л на это дело. А когда позже выяснилось, что работает не везде, расстроился, конечно. Трагикомично, что работает в самом презираемом общественностью обозревателе. Ну, вот еще опера 12-я понимает. На той же машине 16-я стоит и не хочет понимать... Так что надежда заставить работать есть. Порыться в настройках обозревателя, м. б., или уточнить как-то обращение к объекту... |
name задает имена только полям форм и имет особый смысл только впределах этих форм. А у тебя код даже не пытается работать с формой. "имя" элемента (любого) же в общем задается атрибутом id. И действительно существует возможность обращаться напрямую по имени (то есть браузер автоматически создает свойства window.id_элемента). Но в отношении контролов это хреново работает в IE.
Атрибуты же name контролов автоматически мапятся на соответствующие свойства родительской формы. Ссылка на форму есть у каждого контрола. Так что код должен быть таким: <input onсlick=funFilter(this.form.lstAuthor.value,this.form.lstTheme.value)> Причем this можно опустить, так как инлайн-обработчики браузер оборачивает во что-то типа with (this) { ... } |
Часовой пояс GMT +3, время: 05:23. |