Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Аргументы функции и style (https://javascript.ru/forum/events/20910-argumenty-funkcii-i-style.html)

info-work 22.08.2011 15:26

Аргументы функции и style
 
Никак чтото не догоняю...
Помогите пожалуйста.
Есть функция вот она

var BOB=function () {
	switch(arguments.length) {
		case 0:
			return document;
		break;
		case 1:
			return document.getElementById(arguments[0]);
		break;
		case 2:
			return document.getElementById(arguments[0]).style.arguments[1];
		break;
	}
}


Что она делает:
если функции передан 0 аргументов то возвращает документ
если 1 - возвращает документ.ид
если 2 - должна возвратить документ.ид.стиль - НО НЕ ВОЗВРАЩАЕТ
потому что 2-й аргумент строка!!!
как переделать чтобы второй аргумент преобразовывался из строки?
eval - лучше не использовать

А вот как должн выглядеть будущий код

BOB('right_panel_bottom','visibility')='visible';


:help:

B@rmaley.e><e 22.08.2011 15:42

Цитата:

Сообщение от info-work
должна возвратить документ.ид.стиль

Кому должна? С чего бы?
Ответьте, для начала, себе на вопрос, как интерпретатору понять, что такое
Цитата:

Сообщение от info-work
style.arguments

То ли это style.[[значение переменной arguments]], то ли [[значение переменной style]].arguments, то ли [[значение переменной style]].[[значение переменной arguments]], то ли style.arguments.

Странное поведение Вы ожидаете от сценария. И ещё удивляетесь потом, почему оно не работает.

После осознания недетерминированности собственных действий можете почитать об основах JS.

info-work 22.08.2011 18:41

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 121740)
Кому должна? С чего бы?
Ответьте, для начала, себе на вопрос, как интерпретатору понять, что такоеТо ли это style.[[значение переменной arguments]], то ли [[значение переменной style]].arguments, то ли [[значение переменной style]].[[значение переменной arguments]], то ли style.arguments.

Странное поведение Вы ожидаете от сценария. И ещё удивляетесь потом, почему оно не работает.

После осознания недетерминированности собственных действий можете почитать об основах JS.

Чушь вы какую то пишете

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

начнем с того что можно сделать и так

var BOB=function () {
	    switch(arguments.length) {
	        case 0:
	            return document;
	        break;
	        case 1:
	            return document.getElementById(arguments[0]);
	        break;
	        case 2:
	            return document.getElementById(arguments[0]).style[arguments[1]];
	        break;
	    }
	}


но всеравно тут

return document.getElementById(arguments[0]).style[arguments[1]];


вылазит ошибка

может кто есть умнее и знает как сделать именно с 2 параметрами
чтобы функция вызывалась так

BOB('right_panel_bottom','visibility')='visible';



потому как если делать так

return document.getElementById(arguments[0]).style[arguments[1]]='visible';


все работает

P.S.
с тремя параметрами, с обьектом и т.д. предлгать не нужно и сам знаю как сделать

B@rmaley.e><e 22.08.2011 19:17

В JS нет возвращения значения по ссылке (в стиле C++), только по значению.

Т.е. так
Цитата:

Сообщение от info-work
BOB('right_panel_bottom','visibility')='visible';

сделать нельзя.

SkyLight 23.08.2011 11:38

Сама по себе ваша функция в ее последнем варианте работает. Но если вам надо не получить значение, а изменить его, то тут, как сказал B@rmaley.e><e, ничего у вас не получится. В таком случае нужно предусмотреть вариант запуска функции с тремя параметрами и там задавать новое значение.


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