18.07.2011, 14:51
|
Новичок на форуме
|
|
Регистрация: 18.07.2011
Сообщений: 3
|
|
FF. Ошибка при выполнении скрипта.
Доброго времени суток. Я только начал перелезать из делфей в Javascript, поэтому не глумитесь сильно над вопросом. У меня в функции есть обработка формы типа textarea с именем S1. При выполнении скрипта-функции первой строкой идет выражение S1.value="", т.е. я хочу каждый раз чичтить форму, вот на эту строчку имеется ошибка "S1 is not defined". Подскажие в чем причина пожалуйста, в Opera проблемы такой нет.
|
|
18.07.2011, 14:56
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
попробуй найти зону по имени.. (ф-я возвратит нумерованный список. так что,если эл. один, то придется писать [0] )
<textarea name="S1"></textarea>
<script>
alert( document.getElementsByName("S1")[0] )
</script>
|
|
18.07.2011, 15:58
|
Новичок на форуме
|
|
Регистрация: 18.07.2011
Сообщений: 3
|
|
Выдает сообщение [object]. ???
|
|
18.07.2011, 16:06
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Потому что <textarea> - это объект (object).
Чтобы получить значение, делайте так:
<textarea name="S1">ololo</textarea><br>
<button onclick="alert(document.getElementsByName('S1')[0].value)">Посмотреть</button>
|
|
18.07.2011, 21:56
|
Новичок на форуме
|
|
Регистрация: 18.07.2011
Сообщений: 3
|
|
Я привык как в делфях, что можно присвоить переменной значение поля формы, например текстовой, через ее имя (w:=form1.edit1.text), так и тут сделал: var w=S1.value, где S1 - имя формы тип TextArea, опера, которой я пользуюсь, ошибок не дала, я и успокоился...
А скажите, на сколько грамотно будет, если я со своим кодом для умаеньшения геммора с корректировкой кода, поступлю так - там где у меня, скажем, w=S1.value; строчкой ранее я напишу так: var S1=document.getElementsByName("S1")[0], т.е. присвою переменной S1 одноименную форму, и дальнейший код можно не менять...
|
|
18.07.2011, 22:36
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Будут кроссбраузерные гадости. Фишка в том, что эксплорер (и опера вслед за ним, "в целях лучшей совместимости") имеет привычку создавать из элементов вида tagName#id (с идентификатором, проще говоря) глобальные объекты с именем идентификатора. Причём в эксплорере я натыкался ещё и на то, что он не даёт менять им значение. Выхода два:
1) ставить перед идентификатором двоеточие. Тогда глобальный объект создаваться не будет. Минус: нельзя будет назначать стили по идентификатору.
2) называть сами переменные по-другому.
Отмечу, что все вышеперечисленные проблемы - только в глобальной области видимости. Если делать так в ф-ции (не забывая var при этом) - то всё будет прекрасно.
|
|
18.07.2011, 22:36
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
все будет ок
кеширование это называется
|
|
18.07.2011, 23:20
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
<div id="div">text</div>
<script>
div="bla";
alert(div);
</script>
Под ie ошибка.
|
|
18.07.2011, 23:42
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
я ответил автору топика, просто ты опередил, trikadin
|
|
18.07.2011, 23:58
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
А, понятно)
|
|
|
|