Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строка и обращение к полю формы 
V
    Опции темы
dimcat
Дата 25.10.2009, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Наверное покажется смешным, но я запутался)

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

Код

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 становится строкой и соответственно уже не обращается к полю формы... Намекните, пожалуйста как надо....
PM MAIL   Вверх
Michael.de
Дата 25.10.2009, 04:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 22.3.2005
Где: Deutschland

Репутация: 4
Всего: 9



dimcat, а так работает: var f=form_data.names[j].checked; ?
А вообще не помешал бы и код цикла, а ещё лучше с формой.
PM MAIL   Вверх
dimcat
Дата 25.10.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



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

Это сообщение отредактировал(а) dimcat - 25.10.2009, 13:03
PM MAIL   Вверх
IDVsbruck
Дата 25.10.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 7
Всего: 22



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

var names[j]='search1';

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

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


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

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

PM MAIL   Вверх
dimcat
Дата 26.10.2009, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Цитата(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');

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

То, что ты предложил также не работает и я не совсем понял, почему должно работать...
PM MAIL   Вверх
bars80080
Дата 26.10.2009, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



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

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;


только это убогий код, его можно переправить в гораздо лучшую сторону, но какую - зависит от остального кода
PM MAIL WWW   Вверх
dimcat
Дата 26.10.2009, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Убогий не убогий, но мне главное, что это 

Код

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


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

Это сообщение отредактировал(а) dimcat - 26.10.2009, 00:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.