Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Динамическое изменение пути до элемента формы (https://javascript.ru/forum/events/14141-dinamicheskoe-izmenenie-puti-do-ehlementa-formy.html)

Rol1k 02.01.2011 09:33

Динамическое изменение пути до элемента формы
 
Привет коллеги! Всех с наступившим НОВЫМ ГОДОМ! :dance:

Резко переходим к делу.
Разберём простенький пример...

Как из этого
document.form.email.value

динамически получить следующее
document.form.password.value

dmitriymar 02.01.2011 11:30

Цитата:

Сообщение от Rol1k
Резко переходим к делу.
Разберём простенький пример...

Как из этого
document.form.email.value

динамически получить следующее
document.form.password.value

или изменить элемент через innerhtml.
или сделать два элемента на одном месте. скрывать один и открывать другой
и обращаться с необход свойствам его
элементы разные свойства разные

Rol1k 02.01.2011 12:05

Не не не не...

1) Дабы не писать много кода требуется изменить именно динамически.
2) Есть функция check(option)
3) В качестве option можно передать или email или password
4) Если путь к полю имеет тип string, то можно реализовать идею так
function check(option)
{
   var str = 'document.form.$.value'; //тип string
   str = str.replace(/[$]+/, option); //если option == 'email', то str =  document.form.email.value
}

Вроде реализовано динамически, но при типе пути string сценарий не сможет получить значение поля.
Поэтому такой вариант не приемлем...

Нужны выши идеи. :yes:

Aetae 02.01.2011 15:37

Если я правильно понял:
document.form[condition?'email':'password'].value

Rol1k 02.01.2011 21:30

Ну почти... :)

Поясню ещё разок.

В функцию прилетает либо email, либо password и присваевается переменной option

Далее требуется из
document.form.$.value
получить либо
document.form.email.value
либо
document.form.password.value
в зависимости от того, что содержится в option



Мне не понятна Ваша запись
document.form[condition?'email':'password'].value
Что у Вас содержится в condition, и почему перед [ нет точки?

Aetae 02.01.2011 21:45

Цитата:

Сообщение от Rol1k (Сообщение 86015)
Ну почти... :)

Поясню ещё разок.

В функцию прилетает либо email, либо password и присваевается переменной option

Далее требуется из
document.form.$.value
получить либо
document.form.email.value
либо
document.form.password.value
в зависимости от того, что содержится в option

$='email';
document.form[$].value

Цитата:

Сообщение от Rol1k (Сообщение 86015)
Мне не понятна Ваша запись
document.form[condition?'email':'password'].value

Условный оператор
Цитата:

Сообщение от Rol1k (Сообщение 86015)
Что у Вас содержится в condition,

В "condition" вестимо "условие".

Цитата:

Сообщение от Rol1k (Сообщение 86015)
и почему перед [ нет точки?

Учите матчасть.
a={b:10} 
alert(a['b']==a.b)

ksa 03.01.2011 11:25

Цитата:

Сообщение от Rol1k
В функцию прилетает либо email, либо password и присваевается переменной option

Чем так "объяснять", давно пора сделать тестовый пример, на котором все и покажут...

alex_oo7 03.01.2011 13:47

Как я понял тут обычная "если" проверка подойдёт :-?
function check(option)
{

if (option =="email")
{var str = 'document.form.email.value';}
else
{var str = 'document.form.password.value';}
   
}


Или может это сойдёт.....
function check(option)
{
var str = "document.form."+option+".value";
}

ksa 03.01.2011 16:11

alex_oo7, с тем же успехом можно предложить и вот такой вариант... :)

function Check(Name) {
   var str = document.getElementsByName(Name)[0].value
}

Rol1k 07.01.2011 10:30

Всех благодарю. А Aetae расцеловать готов! :)

Вопрос исчерпан!


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