Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   изменить значение переменной в onSelect (https://javascript.ru/forum/events/41837-izmenit-znachenie-peremennojj-v-onselect.html)

kazankoff 01.10.2013 10:09

изменить значение переменной в onSelect
 
Добрый)
Подскажите пжста, имеет ли право на существование конструкция типа :

<script>var msg = "some text"<script>
.... некоторый html-код ...
<input name="vot" type="radio" value="new" onSelect=' msg="other text" '>
.... некоторый html-код ...
<script>document.write(msg);</script>

.. мне почему то казалось что должно работать, но нет .. видимо нельзя так обращаться с переменными в js.. подскажите пожалуйста, добрые люди, в чем тут затык.

просьба помидоры не кидать =)

рони 01.10.2013 10:17

kazankoff,
Цитата:

Метод document.write(str) корректно работает только пока HTML еще не догружен
http://learn.javascript.ru/document-write

danik.js 01.10.2013 11:09

Цитата:

Сообщение от kazankoff
мне почему то казалось что должно работать, но нет

Почему нет? Работает ведь:
<script>var msg = "some text"</script>
.... некоторый html-код ...
<input name="vot" type="radio" value="new" onSelect=' msg="other text" '>
.... некоторый html-код ...
<script>document.write(msg);</script>

Выводит значение глобальной переменной msg ("some text")

kazankoff 01.10.2013 21:36

Цитата:

Сообщение от danik.js (Сообщение 274507)
Выводит значение глобальной переменной msg ("some text")

ну да, а хотелось бы, чтобы onSelect менял значение переменной. Но не меняет. Вот в чем собственно и вопрос, можно ли изменить значение переменной через onSelect? вроде бы почему нет.. но вот почему-то нет.
.. а в связи с выяснившейся правдой об document.write теперь передо мной встает еще один вопрос, какой инструмент можно использовать для вывода в тело документа того или иного текста в зависимости от того, какой из селекторов <input type="radio"> выбран пользователем?

danik.js 01.10.2013 23:12

Цитата:

Сообщение от kazankoff
ну да, а хотелось бы, чтобы onSelect менял значение переменной. Но не меняет.

Да нет же. Меняет. Значение переменной msg меняет. А вот значение текстового узла, созданного через document.write - не меняет. А с какой кстати? Для изменения значения текстового узла нужно использовать DOM-методы.
Проще всего обернуть текстовый узел элементом с уникальным id и уже по нему обращаться и менять значение узла через свойство innerText/textContent элемента (верней перезаписывать узел).

kazankoff 02.10.2013 09:16

Цитата:

Сообщение от danik.js (Сообщение 274632)
Проще всего обернуть текстовый узел элементом с уникальным id и уже по нему обращаться и менять значение узла через свойство innerText/textContent элемента (верней перезаписывать узел).

Понятно. Это я учту, спасибо.

kazankoff 02.10.2013 09:27

С учетом вышесказанного попробовал выстроить схему.
Приведу кусок реального кода, потому что возможно причина того что вся схема не работает в какой - то детали. Может быть канешна я где-то по-большому нагрешил, так как в js не силен, только пытаюсь разобраться ..
============
...
<input name="newuser" type="radio" value="old" checked onSelect='document.getElementById("txt").innerHTML ="Пароль"'>Я уже зарегистрирован(а)
<div style="clear:both; height:12px;"></div>
<input name="newuser" type="radio" value="new" onSelect='document.getElementById("txt").innerHTML ="Придумайте пароль"'>Я хочу зарегистрироваться
<br><br>
<div style="clear:both"></div>
<label for "email">email</label>
<input name="email" type="text" size="32" value="<?=$_REQUEST['email']?>"><br>
<label for "pswd" id="pswdlabel"><span id="txt"></span></label>
<input name="pswd" type="password" size="12">
...
===============
вобщем то это я такую форму авторизации затеял, которая если что то выполняет заодно и форму регистрации, и роль эта определяется выбором пользователем соответствующей radiobutton.
так вот, когда пользователь выбирает радиобаттон, то надо, чтобы кое-какие изменения в форме происходили, для начала пусть меняется подпись в лейбле к инпуту "password", а дальше когда все наконец -то заработает!! буду дальше делать по-аналогии.
.. но пока чего-то не работает .. то есть onSelect никаких изменений в span, который id="txt" не вносит.
.. можа кто-то подскажет в чем ошибка...

рони 02.10.2013 10:03

Цитата:

Сообщение от kazankoff
onSelect

замените на клик onclick

kazankoff 02.10.2013 10:19

Цитата:

Сообщение от рони (Сообщение 274656)
замените на клик onclick

спасиб! да не оскудеет рука дающего! =)


Часовой пояс GMT +3, время: 07:39.