Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   создать цикл (https://javascript.ru/forum/misc/74141-sozdat-cikl.html)

Guamoko 17.06.2018 13:47

создать цикл
 
Добрый день. Запнулся на цикле. Имею функцию:

function HNap(Mater11,Hnap11){

arguments[0].SetActive();

var thick = ActiveMaterial.Thickness;
if(thick == 10){
arguments[1].Value=Window1.Hprm.Value-99;
}
if(thick == 4){
arguments[1].Value=Window1.Hprm.Value-102;
}
}
Если вызываю так:

Window1.Hprm.OnValueChange=function(){
HNap(Window1.Mater11,Window1.Hnap11);
HNap(Window1.Mater21,Window1.Hnap21);
HNap(Window1.Mater31,Window1.Hnap31);
// и т.д.
}
то все нормально. Но хотелось бы избежать повторения одной и той же функции с похожими переменными Моя попытка вызвать через цикл:

var mater = ["Mater11","Mater21","Mater31" // и т.д.];
var hnap = ["HNap11","HNap21","HNap31" // и т.д.];

Window1.Hprm.OnValueChange=function(){
for (var i=0, j=0; i<mater.length, j<hnap.length; i++, j++){
HNap(mater[i],hnap[j]);
}
}
выдает ошибку
TypeError: arquments(0).SetActive is not a function at HNap at
Function.Window1.Hprm.OnValueChange
или другое, если пробую варианты.
Прошу указать на мою ошибку.
Спасибо

j0hnik 17.06.2018 14:08

Window1 - как выглядит?

Window1.Hprm.OnValueChange=function(){
mater.forEach((el,i)=> HNap(Window1[el],Window1[hnap[i]]));
};

Guamoko 17.06.2018 15:38

Спасибо большое за ответ. Прошлая ошибка ушла. Но, к сожалению, появилась другая:
TypeError: Cannot set properti "Value" of undefined at HNap at mater.forEach at Array.forEach(name)
at Function Window1.Hprm.OnValuehange

Белый шум 18.06.2018 01:10

Попробуйте так:
[11, 21, 31].forEach(num => HNap(Window1['Mater'+num], Window1['Hnap'+num]));


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