Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.09.2009, 10:12
Новичок на форуме
Отправить личное сообщение для Яго Посмотреть профиль Найти все сообщения от Яго
 
Регистрация: 24.08.2009
Сообщений: 7

Имена элементов форм в функции
Здравствуйте. У меня допустим есть функция увеличения\уменьшения числа в форме:
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 только.
Ответить с цитированием
  #2 (permalink)  
Старый 28.09.2009, 10:56
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Поиск элементов в DOM
Ответить с цитированием
  #3 (permalink)  
Старый 28.09.2009, 11:04
Новичок на форуме
Отправить личное сообщение для Яго Посмотреть профиль Найти все сообщения от Яго
 
Регистрация: 24.08.2009
Сообщений: 7

Не подходит мне поиск по 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

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

Буду благодарен за более рациональный алгоритм)
Ответить с цитированием
  #4 (permalink)  
Старый 28.09.2009, 11:08
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Так что не понятно то, как переменную вместо имени подставить?
Ответить с цитированием
  #5 (permalink)  
Старый 28.09.2009, 11:13
Новичок на форуме
Отправить личное сообщение для Яго Посмотреть профиль Найти все сообщения от Яго
 
Регистрация: 24.08.2009
Сообщений: 7

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

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]

Последний раз редактировалось Яго, 28.09.2009 в 11:16.
Ответить с цитированием
  #6 (permalink)  
Старый 28.09.2009, 11:40
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

document.forms.a[test].value
Ответить с цитированием
  #7 (permalink)  
Старый 28.09.2009, 12:19
Новичок на форуме
Отправить личное сообщение для Яго Посмотреть профиль Найти все сообщения от Яго
 
Регистрация: 24.08.2009
Сообщений: 7

без кавычек фаербаг выдает ошибку, что 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"] пробовал и с кавычками и без них. Не получается.
Ответить с цитированием
  #8 (permalink)  
Старый 28.09.2009, 12:20
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

А
Сообщение от Яго
gethour
Определена?! У тебя ошибки на уровне синтаксиса. Соберись.
Ответить с цитированием
  #9 (permalink)  
Старый 28.09.2009, 12:26
Новичок на форуме
Отправить личное сообщение для Яго Посмотреть профиль Найти все сообщения от Яго
 
Регистрация: 24.08.2009
Сообщений: 7

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

Я написал то, что мне посоветовали. Свой код работает.
Ответить с цитированием
  #10 (permalink)  
Старый 28.09.2009, 12:36
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование одной функции для элементов с разными ID Ferroks Общие вопросы Javascript 10 11.09.2009 08:51
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 22:33
Выбор элементов и построение списка выбранных элементов. madgals Events/DOM/Window 6 14.04.2009 22:30
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09
владелец функции diagnost Общие вопросы Javascript 6 30.10.2008 15:04