FF. Ошибка при выполнении скрипта.
Доброго времени суток. Я только начал перелезать из делфей в Javascript, поэтому не глумитесь сильно над вопросом. У меня в функции есть обработка формы типа textarea с именем S1. При выполнении скрипта-функции первой строкой идет выражение S1.value="", т.е. я хочу каждый раз чичтить форму, вот на эту строчку имеется ошибка "S1 is not defined". Подскажие в чем причина пожалуйста, в Opera проблемы такой нет.
|
попробуй найти зону по имени.. (ф-я возвратит нумерованный список. так что,если эл. один, то придется писать [0] )
<textarea name="S1"></textarea> <script> alert( document.getElementsByName("S1")[0] ) </script> |
Выдает сообщение [object]. ???
|
Потому что <textarea> - это объект (object).
Чтобы получить значение, делайте так: <textarea name="S1">ololo</textarea><br> <button onclick="alert(document.getElementsByName('S1')[0].value)">Посмотреть</button> |
Я привык как в делфях, что можно присвоить переменной значение поля формы, например текстовой, через ее имя (w:=form1.edit1.text), так и тут сделал: var w=S1.value, где S1 - имя формы тип TextArea, опера, которой я пользуюсь, ошибок не дала, я и успокоился...
А скажите, на сколько грамотно будет, если я со своим кодом для умаеньшения геммора с корректировкой кода, поступлю так - там где у меня, скажем, w=S1.value; строчкой ранее я напишу так: var S1=document.getElementsByName("S1")[0], т.е. присвою переменной S1 одноименную форму, и дальнейший код можно не менять... |
Будут кроссбраузерные гадости. Фишка в том, что эксплорер (и опера вслед за ним, "в целях лучшей совместимости") имеет привычку создавать из элементов вида tagName#id (с идентификатором, проще говоря) глобальные объекты с именем идентификатора. Причём в эксплорере я натыкался ещё и на то, что он не даёт менять им значение. Выхода два:
1) ставить перед идентификатором двоеточие. Тогда глобальный объект создаваться не будет. Минус: нельзя будет назначать стили по идентификатору. 2) называть сами переменные по-другому. Отмечу, что все вышеперечисленные проблемы - только в глобальной области видимости. Если делать так в ф-ции (не забывая var при этом) - то всё будет прекрасно. |
все будет ок :)
кеширование это называется |
<div id="div">text</div> <script> div="bla"; alert(div); </script> Под ie ошибка. |
я ответил автору топика, просто ты опередил, trikadin
|
А, понятно)
|
Часовой пояс GMT +3, время: 13:07. |