Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.08.2011, 15:26
Новичок на форуме
Отправить личное сообщение для info-work Посмотреть профиль Найти все сообщения от info-work
 
Регистрация: 20.08.2011
Сообщений: 3

Аргументы функции и 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';


Ответить с цитированием
  #2 (permalink)  
Старый 22.08.2011, 15:42
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от info-work
должна возвратить документ.ид.стиль
Кому должна? С чего бы?
Ответьте, для начала, себе на вопрос, как интерпретатору понять, что такое
Сообщение от info-work
style.arguments
То ли это style.[[значение переменной arguments]], то ли [[значение переменной style]].arguments, то ли [[значение переменной style]].[[значение переменной arguments]], то ли style.arguments.

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

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

Последний раз редактировалось B@rmaley.e><e, 22.08.2011 в 15:45.
Ответить с цитированием
  #3 (permalink)  
Старый 22.08.2011, 18:41
Новичок на форуме
Отправить личное сообщение для info-work Посмотреть профиль Найти все сообщения от info-work
 
Регистрация: 20.08.2011
Сообщений: 3

Сообщение от B@rmaley.e><e Посмотреть сообщение
Кому должна? С чего бы?
Ответьте, для начала, себе на вопрос, как интерпретатору понять, что такоеТо ли это 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.
с тремя параметрами, с обьектом и т.д. предлгать не нужно и сам знаю как сделать
Ответить с цитированием
  #4 (permalink)  
Старый 22.08.2011, 19:17
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

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

Т.е. так
Сообщение от info-work
BOB('right_panel_bottom','visibility')='visible';
сделать нельзя.

Последний раз редактировалось B@rmaley.e><e, 22.08.2011 в 19:19.
Ответить с цитированием
  #5 (permalink)  
Старый 23.08.2011, 11:38
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическое содержимое функции alfmaster Общие вопросы Javascript 2 28.05.2011 17:10
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03
Аргументы функции по умолчанию barcelona Общие вопросы Javascript 3 22.05.2009 05:04