Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Строка и обращение к полю формы


Автор: dimcat 25.10.2009, 02:34
Наверное покажется смешным, но я запутался)

Есть такой код:

Код

var names[j]='search1';
var f=form_data.'+names[j]+'.checked;
if (f==true) cost=5;


он не работает. В то время как этот код:

Код

var f=form_data.search1.checked;
if (f==true) cost=5;


работает. 

Как я понимаю в первом случае f становится строкой и соответственно уже не обращается к полю формы... Намекните, пожалуйста как надо....

Автор: Michael.de 25.10.2009, 04:18
dimcat, а так работает: var f=form_data.names[j].checked; ?
А вообще не помешал бы и код цикла, а ещё лучше с формой.

Автор: dimcat 25.10.2009, 13:02
Michael.de, нет, так тоже не работает... Зачем полностью писать? Причина в следующем: когда обращаюсь к полю как обычно (form_data.search1.checked;), то всё работает, если же вместо search1 подставляю переменную равную search1, то уже не работает... Это вопрос синтаксиса всего лишь...

Автор: IDVsbruck 25.10.2009, 17:32
Ну, во-первых, что это за запись:
Код

var names[j]='search1';

Так работает назначение? Это противоречит правилам языка. Нужно
Код

var names = [];
names[j] = "qwerty";


Во-вторых пробуй обращаться к полю так
Код

var f = form_data[names[j]].checked;

Автор: dimcat 26.10.2009, 00:11
Цитата(IDVsbruck @ 25.10.2009,  17:32)
Ну, во-первых, что это за запись:
Код

var names[j]='search1';

Так работает назначение? Это противоречит правилам языка. Нужно
Код

var names = [];
names[j] = "qwerty";


Во-вторых пробуй обращаться к полю так
Код

var f = form_data[names[j]].checked;

Назначение происходит не так, а вот... 
Код

var names = new Array ('zero', 'reg','page','search1','sendmail','guestbook','forum','content','votes','gallery','catalog','chanpionship','pay');

Это просто показал для примера. Но суть не в этом...

То, что ты предложил также не работает и я не совсем понял, почему должно работать...

Автор: bars80080 26.10.2009, 00:30
можно только посетовать на то, что мёртвые скрипты надо закапывать в землю, а не пытаться выгородить из них новые вавилоны

f=form_data.'+names[j]+'.checked;
не имеет права на существование, так как вы пытаетесь прямо в исполняемую строку вставить необработанный литерал. он у вас и ищет элемент в форме с именем +names[j]+

то что показал IDVsbruck - работает, но не применительно к вашей задаче, так как самой задачи вы не показали, а только маленький отрывок. вот он вам и маленьким примером и ответил. а что вы там дальше с этим кодом сделали - один чёрт знает


 
Цитата(dimcat @  25.10.2009,  01:34 Найти цитируемый пост)
Намекните, пожалуйста как надо....

не плохо было бы намекнуть, что есть names[j]. ладно, представим что это имена полей в форме, тогда:

дабы всё было кошерно и не шкворчало, надобно бы сделать так:

Код

names[j] = 'search1';
f = document.getElementsByName(names[j])[0].checked;
if(f==true) cost=5;


только это убогий код, его можно переправить в гораздо лучшую сторону, но какую - зависит от остального кода

Автор: dimcat 26.10.2009, 00:53
Убогий не убогий, но мне главное, что это 

Код

f = document.getElementsByName(names[j])[0].checked;


работает) спасибо)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)