2013-05-24 6 views
-1

Я создаю функцию яваскрипта динамически для каждого элемента, и я хочу, чтобы назвать их позже, подробности в код комментарииСоздание динамической функции и вызывать их

var i=0; 
    $(this).find("Tasks").each(function (i, e) { 
    i++; 
    function dynamicFunction+ i(){ } 
)}; 
    // this will result as dynamicFunction1, dynamicFunction2, dynamicFunction3 ... so on 
    //now i want to call them under antoher function 
    //so my doing this 
    for(var k=0;k<=i;k++) 
    { 
    dynamicFunction + k(); // this is not working 
    } 
+2

Почему бы вам просто не использовать одну и ту же функцию с разными аргументами? – DarkAjax

+0

@darkajax такая же функция не будет работать в моей ситуации, –

+1

Ну, это тоже не сработает, так что вы могли бы также показать реальную ситуацию. Я уверен, что вы можете заставить его работать с параметрами. – JJJ

ответ

1

помнить, что это function foo() { } (примерно) эквивалентно window["foo"] = function() { }. Поэтому, чтобы создать те динамически названные функции, которые вы могли бы сделать

var i = 0; 
$(this).find("Tasks").each(function(i2, e) { 
    i++; 
    window["dynamicFunction" + i] = function() { } 
)}; 

for(var k=0;k<=i;k++) { 
    window["dynamicFunction" + k](); 
} 

Хотя, а не глобальный window вы, вероятно, следует использовать специальную переменную вместо.

1

Если вы должны использовать отдельные функции, почему бы не просто сохранить их в массиве, и итерации этого массива позднее:

var funcArr = []; 
    $(this).find("Tasks").each(function (i, e) { 
     funcArr.push(function(){ 
      //some code 
     }); 
)}; 

    for(var k = 0; k < funcArr.length; k++) 
    { 
     funcArr[k](); 
    } 
Смежные вопросы