Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Имена элементов форм в функции (https://javascript.ru/forum/events/5224-imena-ehlementov-form-v-funkcii.html)

Яго 28.09.2009 10:12

Имена элементов форм в функции
 
Здравствуйте. У меня допустим есть функция увеличения\уменьшения числа в форме:
function plusmin(val,test){
	if (val==0){
		document.forms.a.test.value=(+(document.forms.a.test.value)-1);
	}
	else{
		document.forms.a.test.value=(+(document.forms.a.test.value)+1);
	}
}


Что мне надо:
Сделать так, чтобы имя, передаваемое в переменную test менялось в значении document.forms.a.test.value. Например если в переменную test передано значение Vasya P, надо чтоб искался элемент формы с именем Vasya P (document.forms.a.Vasya P.value). В этой функции ищется элемент test только.

Octane 28.09.2009 10:56

Поиск элементов в DOM

Яго 28.09.2009 11:04

Не подходит мне поиск по DOM. Решил проблему так:

function plusmin(test,val){
	if (val==0){
		test++
	}
	else{
		test--
	}
	return(test);
}

И при вызове:
onClick="document.forms.a.test.value=plusmin(document.forms.a.test.value,1)" // уменьшение на 1
onClick="document.forms.a.test.value=plusmin(document.forms.a.test.value,0)" //увеличение на 1

Естественно имена элементов формы могут меняться как угодно.

Буду благодарен за более рациональный алгоритм)

Octane 28.09.2009 11:08

Так что не понятно то, как переменную вместо имени подставить?

Яго 28.09.2009 11:13

Цитата:

Сообщение от Octane (Сообщение 31122)
Так что не понятно то, как переменную вместо имени подставить?

Да. Имя перменной при обращении к объекту. Пробовал через массив - не получилось. Пробовал так:

function plusmin(val,test){
    var as= new Array();
    as["test"]=test;
    if (val==0){
        document.forms.a.as["test"].value=(+(document.forms.a.as["test"].value)-1);
    }
    else{
        document.forms.a.as["test"].value=(+(document.forms.a.as["test"].value)+1);
    }

}[/JS]

Octane 28.09.2009 11:40

document.forms.a[test].value

Яго 28.09.2009 12:19

без кавычек фаербаг выдает ошибку, что document.forms.a[test] не определена. С кавычками ищет только элемент формы с названием test. Может не там правлю или что? Вот код:

function tester(test,val){
		var as=new Array();
		as["test"]=test;
    if (val==0){
        document.forms.a[test].value=(+(document.forms.a[test].value)-1);
    }
    else{
        document.forms.a[test].value=(+(document.forms.a[test].value)+1);
    }
}


Вот событие:
onClick="tester(gethour,1)"


as["test"] пробовал и с кавычками и без них. Не получается.

B~Vladi 28.09.2009 12:20

А
Цитата:

Сообщение от Яго
gethour

Определена?! У тебя ошибки на уровне синтаксиса. Соберись.

Яго 28.09.2009 12:26

<input type='text' size=3 name=gethour> В коде есть.

Я написал то, что мне посоветовали. Свой код работает.

Octane 28.09.2009 12:36

Строки в JavaScript записываются в кавычках, если вы передаете имя элемента в виде строки, так и пишите соответственно в кавычках.
onClick="tester('gethour',1)"


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