Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция для работы с формой (https://javascript.ru/forum/misc/9977-funkciya-dlya-raboty-s-formojj.html)

HedgehogNSK 13.06.2010 22:07

Функция для работы с формой
 
Попытался написать функцию по аналогиям, которые наскрёб в рамках данного форума. Но что-то не работает функция. Безнадёжна ли данная функция или её можно исправить?
<script language='Javascript'>
function change(x,y)
{
	var form = document.getElementsByName('add_form');
	var radiobox = form.getElementsByName('edit');
	var field_for_change = form.getElementsByName('id');
	var button=form.getElementsByName('addit');
	var act='index.php?submenu='+x+'&action=';

	if(radiobox.name == y)
	{
		form.action=act+'1';
		field_for_change.type='text';
		field_for_change.value='';
		button.value='Добавить';
	}
	else
	{
		form.action=act+'2';
		field_for_change.type='text';
		field_for_change.value=radiobox.id;
		button.value='Изменить';
	}
	
}
</script>


<BODY>
<FORM METHOD='POST' ACTION='index.html?submenu=1' NAME='add_form'>
<INPUT TYPE='hidden' NAME='id' VALUE=''/>
<INPUT TYPE='text' NAME='name' VALUE='' size='20'/>
<BUTTON NAME='addit'>Добавить</BUTTON>
<table border='1'>
<tr bgcolor='#DDDDDD'>
	<td>Заголовок</td>
	<td><INPUT TYPE='radio' name='edit' id='text' OnClick=\"change('wow',this.id)\" checked></td>
</tr>
<tr>
	<td>Текст1</td>
	<td><INPUT TYPE='radio' name='edit' id='1'OnClick=\"change('wow','text')\"></td>
</tr>
<tr>
	<td>Текст2</td>
	<td><INPUT TYPE='radio' name='edit' id='2' OnClick=\"change('wow','text')\"></td>
</tr>
</table>
</FORM>
</BODY>
</HTML>

Kolyaj 13.06.2010 22:15

Цитата:

Сообщение от HedgehogNSK
GetElementByName

Нет такого метода. В JavaScript вообще нет ни одного метода, имя которого начинается с заглавной буквы. Есть getElementsByName, обратите внимание на s в слове elements.

HedgehogNSK 13.06.2010 22:20

Упс.=) Ну простите начинающего javascript'ера. Подправил первый пост. Спасибо за ценные сведенья. Функция не работает всё равно. Продолжаем искать ошибки.

Kolyaj 13.06.2010 22:52

Не обратили внимание на s.

HedgehogNSK 13.06.2010 23:10

Ну я понял что "s", я добавил. Я понимаю что возвращает он массив результатов. Но не понятно, как можно обратиться к нужному мне элементу массива:
1. Если это add_form, button, field_for_change если каждый из name'ов представлен в единственном экзмепляре на весь документ?
2. Если это edit у которого разные id. Как мне получить id из которого я вызвал эту функцию?

exec 14.06.2010 08:55

Цитата:

1. Если это add_form, button, field_for_change если каждый из name'ов представлен в единственном экзмепляре на весь документ?
getElementsByName(name)[0];


Цитата:

2. Если это edit у которого разные id. Как мне получить id из которого я вызвал эту функцию?
function change(x,y,z) { … } // в переменную z будет передаваться this


<input onclick="change(x, y, this);" …

HedgehogNSK 14.06.2010 14:22

function change(x,y,z)
{
	var form = document.getElementsByName('add_form')[0];
	var field_for_change = document.getElementsByName('id')[0];
	var button=document.getElementsByName('addit')[0];
	var act='index.php?submenu='+x+'&action=';
	if(z.id == y)
	{
		form.action=act+'1';
		field_for_change.value='';
		button.value='Äîáàâèòü';
	}
	else
	{
		form.action=act+'2';
		field_for_change.value=z.id;
		button.value='Èçìåíèòü';
	}
	
}


Cпасибо. Получилась вот такая незатейливая функция.


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