Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вызов функции через цикл (https://javascript.ru/forum/misc/42892-vyzov-funkcii-cherez-cikl.html)

gh321 13.11.2013 13:08

Вызов функции через цикл
 
Есть несколько функций
q_1(){};

q_2(){};
...
q_10(){};

Почему так так нельзя вызвать?
for(var i=2;i<11;i++)
	{
	
       if(j==i)
	   q_'+i+'();
           //q_.'+i+'.(); - это то же не работает
		
        
	}

Название функции это не строка, понятно,но как реализовать вызов через цикл таких функций

animhotep 13.11.2013 13:17

наверное потому что q_1 != question_1 ))
ну и для вызова функции есть eval
function q_1 () {
	console.log (1);
}

function q_2 () {
	console.log (2);
}


for(var i=1;i<3;i++){
   eval ("q_"+i+"()");
}

ksa 13.11.2013 13:24

Цитата:

Сообщение от animhotep
для вызова функции есть eval

не пиши тут такого! :nono:

Альтернатива на лицо!

var fnc=[];
fnc[0]=function (){alert(0)};
fnc[1]=function (){alert(1)};
fnc[2]=function (){alert(2)};
for (var i=0; i<fnc.length; i++) {
   fnc[i]();
};

gh321 13.11.2013 13:25

animhotep
question опечатка конечно .
В остальном спасибо

gh321 13.11.2013 13:27

Цитата:

Сообщение от ksa (Сообщение 280794)
не пиши тут такого! :nono:

Альтернатива на лицо!

var fnc=[];
fnc[0]=function (){alert(0)};
fnc[1]=function (){alert(1)};
fnc[2]=function (){alert(2)};
for (var i=0; i<fnc.length; i++) {
   fnc[i]();
};

А почему с eval не корректно ?

ksa 13.11.2013 13:28

Цитата:

Сообщение от gh321
А почему с eval не корректно ?

Это тут не приветстуется... :D

В любом случае, если есть отличная альтернатива - зачем колхозить? ;)

animhotep 13.11.2013 14:10

я слышал что eval это зло) но, думаю, тс-у на это глубоко накакать
все начинают с "абы работало", потом каждый сам решит что зло а что нет

ksa 13.11.2013 14:13

Цитата:

Сообщение от animhotep
я слышал что eval это зло

Я так его не позиционирую... :D

ruslan_mart 13.11.2013 14:32

Мда уж :)

function q_1 () {
	console.log (1);
}

function q_2 () {
	console.log (2);
}

for(var i=1; i<3; i++) window['q' + i]();

Андрей38 19.08.2016 20:55

Здравствуйте KSA! Не получаеться загружать и подсчтитывать количество фреймов по мере их загрузки.
Хочу переходить на загрузку следующего ифрейма только по событию готовности прежнего- onload.Использовал конструкцию <iframe id="ifrm" src="demo.html" onload="doSomething()"></iframe> Исправно выдает алерт: onload=alert("Yes!") но передать это в инкримент-мучаюсь уже 4 дня:
var i=0;
while (i< 9)
{
iframe.onload = function() {
alert('!!!!');
i++;
www.document.write('<iframe width="700" height="700" src="'+linksarray[i].href+'"> </iframe> ');

var iframe = www.document.getElementsByTagName('iframe')[0];

};
};
................ПОМОГИТЕ ПОЖАЙЛУСТА...............

warren buffet 20.08.2016 12:28

И зачем ты 9 раз втыкаешь в .onload одно и то же? Чтобы глубже, типа, залезло?

Андрей38 20.08.2016 17:42

Cпасибо! Я так проверяю докудова дотягивает цикл. Я тут неичего не вижу в таком языке. В асамблере мне было куда нагладней.Правда писанина была в высоту-а тут- в длину :) Последнее что сделал,но мне нужно это же самое, но токо для ифреймов...new Image();- не нашел такое для ифрейма...
javascript:

var preloadedImg = new Image();
gotov=preloadedImg.src = "http://enya.msv.pl/wp-content/uploads/2016/05/SW-banner-2.jpg";
var x=0;

while (x<3){
x++;
var gg= function() {
document.body.innerHTML+='<img src="'+gotov+'"</img>';
alert(gotov)} ;
if(preloadedImg.complete) {
gg()
};
};

warren buffet 20.08.2016 22:20

Расскажешь зачем тебе 9 яфреймов, я напишу тебе как из загрузить один за другим.

Андрей38 21.08.2016 22:12

НУ не девять,а 3 если точнее.Я пытался через вайл инкриментить Х дабі подставлять его в порядковй номер найденых ссылок... Это для проверки_где заканчивается цикл.Я так делал в Ассемблере для микроконроллеров.Буду очень! благодарен такому для ифреймов так чтобы я понимал что происходит-те с while и вызовом функции по ее имени..
Я буду очень ждать на Вашу подСКАЗКУ, warren buffet !!!

warren buffet 22.08.2016 08:44

Цитата:

Сообщение от Андрей38
Ассемблере для микроконроллеров

Веб - это тебе не ассемблер, тут данные лежат не в регистрах и не по адресу в озу, а по адресу в интернете.

Поскольку на вопрос ты не ответил, то ищи решение сам.

Андрей38 22.08.2016 12:21

Я пытался через вайл инкриментить Х дабі подставлять его в порядковй номер найденых ссылок... Это для проверки_где заканчивается цикл.Я так делал в Ассемблере для микроконроллеров.Сократил прежнее до сути ответа.Помоги.


...Я понимаю так_Сначала нужно загрузить,а потом отрендерить document.body.innerHTML+='<img src="'+gotov+'"</img>'; или document.write('<img src="'+gotov+'"</img>'). Как раз как загрузить-я и не знаю...


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