Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Передача в функцию переменного количества аргументов (https://javascript.ru/forum/dom-window/15156-peredacha-v-funkciyu-peremennogo-kolichestva-argumentov.html)

Эдди 15.02.2011 10:29

Передача в функцию переменного количества аргументов
 
Подскажите, пожалуйста.

Количество аргументов, которые надо передать в функцию, изначально неизвестно. В php передаешь массив, и дело с концом.

Как в js это сделать, ума не приложу.

ПРИМЕР. Функция проверки полей формы на заполненность. Хочу передать в функцию поля, коорые проверять не нужно. В разных случаях количество этих полей разное.

help:)

walik 15.02.2011 10:57

Если я правильно понял то:

function myFunc(a, b, c, d) {
		alert(arguments.length);
	}
	
	myFunc(1, 2, 3);


С помощью arguments.length узнаешь сколько аргументов ей было передано и выполняешь необходимые действия.

kadabrik 15.02.2011 11:10

Цитата:

Сообщение от Эдди (Сообщение 92551)
Подскажите, пожалуйста.
В php передаешь массив, и дело с концом.
Как в js это сделать, ума не приложу.

На самом деле почти также - передать объект.

function foo(obj)
{
   alert((obj['width'])+' '+ (obj['height']));
}

var obj = new Object();
obj['width'] = 100;
obj['height'] = 120;
foo(obj);

ksa 15.02.2011 11:28

Цитата:

Сообщение от Эдди
Как в js это сделать, ума не приложу.

Просто почитай букварь...
http://javascript.ru/arguments

Эдди 15.02.2011 13:09

ksa Букварь прочитан. Ответ не найден.

walik И сколько мне указывать аргументов в функции?
Можно, конечно, с запасом написать 100 аргументов. Но криво это будет. Неправильно.

kadabrik А как на странице я буду вызывать скрипт. К примеру, если я хочу исключить поля с названиями subject и text?

Как потом аргументы обработать понятно. Вопрос, как передать туда аргументы...:blink:

Kolyaj 15.02.2011 13:12

Цитата:

Сообщение от Эдди
ksa Букварь прочитан. Ответ не найден.

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

Эдди 15.02.2011 13:14

НУ перечту сейчас еще раз внимательнее...

ПРИНОШУ СВОИ ГЛУБОЧАЙШИЕ ИЗВИНЕНИЯ...
С этим все ясно. Вообще в функции не ставлю ни одного аргумента, а передаю, сколько захочу.

Попутный вопрос (уж извините новичка), чтобы не плодить темы.

Функция проверяет поля формы на заполненность. Если поле не заполнено, alert выводит оповещение.
Нажимаю ОК, в форме поля очищаются. Как этого избежать?

kadabrik 15.02.2011 13:26

Цитата:

Сообщение от Эдди (Сообщение 92576)
Функция проверяет поля формы на заполненность. Если поле не заполнено, alert выводит оповещение.
Нажимаю ОК, в форме поля очищаются. Как этого избежать?

Не очищать поля :D

Эдди 15.02.2011 13:27

Цитата:

Сообщение от kadabrik (Сообщение 92577)
Не очищать поля :D

:cray: Как? (плачу сильно)

walik 15.02.2011 13:40

<html>
<head>
	<script language="JavaScript">
	function check() {
		field1 = document.getElementById( "field1" );
		if (field1.value == '')
			alert('Не заполнено поле field1');
	}
</script>
</head>
<body>
<form name="form1" onsubmit="check(); return false;">
<input type="text" id="field1" /> <br />
<input type="text" id="field2" /> <br />
<input type="submit"/>
</form>
</body>
</html>


Вот появляется alert сообщение, поля не очищаются, в чем проблема ?


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