Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.09.2012, 11:05
Новичок на форуме
Отправить личное сообщение для АйОй Посмотреть профиль Найти все сообщения от АйОй
 
Регистрация: 29.09.2012
Сообщений: 3

Строку переделать в переменную
Здравствуйте!

Функция ссылается на функцию. В вызове функции имя переменной задано в кавычках. Можно его прочитать как переменную? Попробую объяснить на примере.

var raz='раз';//--переменные, которые читаю
var dva='два';


function vyvod(tchto){//--обработчик

itog='делай '+tchto;
document.write (itog+'<br>');

};


function navyvod(){//--вызываю обработчик, в который посылаю переменные

vyvod(raz);vyvod(dva)//--здесь все работает как надо. Но проблема в том, что запись идет vyvod('raz');vyvod('dva'), т.е. с кавычками. Как такой текст "raz и dva" в обработчике прочитать как переменные "raz и dva"?

};


navyvod();//--так вывожу весь этот винегрет.
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2012, 11:16
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

для глобальных: window[thchto]
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2012, 11:32
Новичок на форуме
Отправить личное сообщение для АйОй Посмотреть профиль Найти все сообщения от АйОй
 
Регистрация: 29.09.2012
Сообщений: 3

Спасибо! Но что-то не так понял я, наверное. Делаю так, но не работает:

function vyvod(tchto){

tchto2=window[thchto];

itog='делай '+tchto2;
document.write (itog+'<br>');

};
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2012, 12:04
Новичок на форуме
Отправить личное сообщение для АйОй Посмотреть профиль Найти все сообщения от АйОй
 
Регистрация: 29.09.2012
Сообщений: 3

Блин, неправильно написал, не "thchto", а "tchto". Ура! работает! Спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 29.09.2012, 14:55
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Maxmaxmахimus, есть более приличный способ сделать замену в функции (с учётом того, что вручную код функции f() никак поменять, вариант со сменой обработчика подобной функцией в расчёт не берём, то есть нужно получить новую функцию из старой путём некоторых замен в старой)?
<button>click</button>
<button>change</button>
<script>
function f() {
	if (true) {
		alert('old');
	}
}
var childs = document.body.children;

childs[0].onclick = f;

childs[1].onclick = function () {
	childs[0].onclick = function () {
		eval(f.toString().replace ('old', 'new').replace('function f() {', '').replace(/}$/, ''));
	}
}
</script>

Последний раз редактировалось bes, 29.09.2012 в 15:03.
Ответить с цитированием
  #6 (permalink)  
Старый 29.09.2012, 15:29
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Maxmaxmахimus
bes,
че ты несешь наркоман)))?
По примеру не понятно, что требуется, пояснить?
Ответить с цитированием
  #7 (permalink)  
Старый 01.10.2012, 11:50
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Maxmaxmахimus
ты обращаешься ко мне и показываешь более приличный метод СДЕЛАТЬ ЧТО??? Чел попросил как обращаться к переменной если её имя лежит в другой переменной в виде строки, я показал как, а ты какую то херню показал.

Какие то онклики html зачем-то создал, ты походу тредом ошибся.
я ничего не показывал ТС, это был вопрос (в конце предложения стоит знак вопроса), сам завёл речь об eval

Сообщение от Maxmaxmахimus
eval( itog + "='делай '+" + tchto )
не догнал

моя мысль для замены кода в функции: привести к строке, сделать замену, убрать лишнее ('function имя {' и последнюю скобку '}'), исполнить при помощи eval
Ответить с цитированием
  #8 (permalink)  
Старый 01.10.2012, 19:51
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Maxmaxmахimus
И че за бред? а если там замыкание? и тебе не кажется что это более рерурсоемко и бессмысленно чем просто ивалить динамически сгенерированный код в контексте вызванной функции?
звучит красиво

в данном случае замыканий нет

на моём тестовом примере можешь показать как это будет выглядеть на практике: alert должен начать выводить другое сообщение
Ответить с цитированием
  #9 (permalink)  
Старый 01.10.2012, 19:52
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

Наркоманы.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 01.10.2012, 20:05
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Aetae
Наркоманы.
Aetae, ты там рядом с Maxmaxmахimus-ом сидишь, спроси может ли он в код обратить свои слова
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать переменную с jquery в php Максим2 jQuery 14 28.07.2013 11:38
как получить первую видимую строку в переменную ? mitiya Общие вопросы Javascript 23 30.06.2012 23:29
$.ajax-как передать переменную в данных Dimaz jQuery 1 15.02.2010 16:00
Как передать переменную в handleServerResponse Motoko AJAX и COMET 2 17.07.2009 11:04
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58