[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как добавить значение переменной к имени функции
arbuzmaster
Помогите пожалуйста!!

Есть переменная

  var device=newid_split[1];

как её сюда пихнуть
refreshxmlHttp.onreadystatechange = updatePage_get_percentage_+device;


_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
Zuenf
Еcли без этого никак то можно так попробовать:
refreshxmlHttp.onreadystatechange = window['updatePage_get_percentage_'+device];


Хотя я бы сделал хотя бы что-то типа:

var updatePage_get_percentage = {
'device1': function(){},
'device2': function(){}
}



и потом просто:
refreshxmlHttp.onreadystatechange = updatePage_get_percentage[device];
arbuzmaster
Цитата (Zuenf @ 3.02.2015 - 18:57)
Ели без этого никак то можно так попробовать:
<pre class="sh_sourceCode" rel="js">refreshxmlHttp<span class="sh_symbol">.</span>onreadystatechange <span class="sh_symbol">=</span> <span class="sh_object">window</span><span class="sh_symbol">[</span><span class="sh_escape_alt">'updatePage_get_percentage_'</span><span class="sh_symbol">+</span>device<span class="sh_symbol">];</span></pre>

Arbeitet Nicht huh.gif
Может есть еще варианты?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
OleKh
Цитата
onreadystatechange  Stores a function (or the name of a function) to be called automatically each time the readyState property changes


http://www.w3schools.com/dom/dom_httprequest.asp

Для начала нужно узнать что в переменной updatePage_get_percentage_ и что в элементе массива newid_split[1], чтобы делать какие-то действия.
Zuenf
Либо через this попробуй. (или сохраненный this в контексте которого находится нужная функция)

refreshxmlHttp.onreadystatechange = this['updatePage_get_percentage_'+device];
kaww
Zuenf, ну или так
refreshxmlHttp.onreadystatechange = window['updatePage_get_percentage_'+device];

т.к. неясно где объявлена функция, пусть будет и вариант с глобальным скопом ;)
Zuenf
kaww, уже был wink.gif
kaww
Zuenf, действительно, не заметил. Ну тогда пусть ТС показыввет весь код, чтобы не гадать.
arbuzmaster
Цитата (OleKh @ 3.02.2015 - 19:26)
Цитата
onreadystatechange  Stores a function (or the name of a function) to be called automatically each time the readyState property changes


http://www.w3schools.com/dom/dom_httprequest.asp

Для начала нужно узнать что в переменной updatePage_get_percentage_ и что в элементе массива newid_split[1], чтобы делать какие-то действия.

updatePage_get_percentage_ - это не переменная а имя функции . в newid_split[1], имя девайса которое меняется в зависимости от выбора пользователя В итоге хотел получить например updatePage_get_percentage_dev1

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
Zuenf
Цитата
updatePage_get_percentage_ - это не переменная а имя функции . в newid_split[1], имя девайса которое меняется в зависимости от выбора пользователя В итоге хотел получить например updatePage_get_percentage_dev1

Это лучше в виде объекта с функциями реализовать.
OleKh
Цитата (arbuzmaster @ 3.02.2015 - 17:48)
updatePage_get_percentage_ - это не переменная а имя функции . в newid_split[1], имя девайса которое меняется в зависимости от выбора пользователя В итоге хотел получить например updatePage_get_percentage_dev1


Переменная которая содержит имя функции или функцию, а нужно вызвать другую функцию. Это что-то типа в php должно получиться

 eval('updatePage_get_percentage _'.'dev1');
arbuzmaster
refreshxmlHttp.onreadystatechange = this['updatePage_get_percentage_'+device]; спасибо вот это работает буду копать дальше Ага типа как в PHP

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
OleKh
Для себя перепроверил, поделюсь результатами, может будет полезно.

Цитата
onreadystatechange  Stores
a function (or the name of a function)
to be called automatically each time the readyState property changes


т.е. свойство onreadystatechange может содержать функцию или название функции

Отсюда ошибка конкантенации, если в переменной функция, а если в переменной название функции (строка), тогда можно было складывать как угодно и получился бы результат и через this, window (функция добавляется целиком) и напрямую, переменная + переменная, строка + переменная (функция добавляется как название).

// неправильно т.к. переменная (функция) + строка
//var updatePage_get_percentage_ = function updatePage_get_percentage_(){
// alert('func');
//};

//правильно, т.к. переменная (строка) + строка

var updatePage_get_percentage_ = 'updatePage_get_percentage_';

function updatePage_get_percentage_(){ // ошибка т.к. название переменной и функции совпадают, не фатальная
alert('func');
}

function updatePage_get_percentage_1(){
alert('func1');
}


var dev = 1;

var obj = {};
obj.prop = updatePage_get_percentage_;
obj.prop_1 = updatePage_get_percentage_ + dev;
obj.prop_2 = this['updatePage_get_percentage_' + dev];
obj.prop_3 = window['updatePage_get_percentage_' + dev];

dump(obj);

function dump(element) {
var out = '';
for (var i in element) {
out += i + ": " + element[i] + "\n";
}
alert(out);

}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.