2014-11-07 3 views
0

Если у меня есть 300 функций, как это:Конкатенация функций javascript?

function name1() { 
    alert("1"); 
} 

function name2() { 
    alert("2"); 
} 

function name3() { 
    alert("3"); 
} 

Etc весь путь до 300, как я мог бы объединить это все в одной функции, потому что они настолько похожи, хотя каждый из них действительно есть небольшие различия?

UPDATE:

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

function event() { 
    //paths 
    var path = document.querySelector('#container #path'); 
    var length = path.getTotalLength(); 
    console.log(path.getTotalLength()); 
    // Clear any previous transition 
    path.style.transition = path.style.WebkitTransition = 
     'none'; 
    // Set up the starting positions 
    path.style.strokeDasharray = length + ' ' + length; 
    path.style.strokeDashoffset = length; 
    // Trigger a layout so styles are calculated & the browser 
    // picks up the starting position before animating 
    path.getBoundingClientRect(); 
    // Define our transition 
    path.style.transition = path.style.WebkitTransition = 
     'stroke-dashoffset 0.4s linear'; 
    // Go! 
    path.style.strokeDashoffset = '0'; 

    document.getElementById("container").style.visibility = "visible"; 
}; 

function event2() { 
    //paths 
    var path2 = document.querySelector('#container2 #path_2'); 
    var length = path2.getTotalLength(); 
    console.log(path2.getTotalLength()); 
    // Clear any previous transition 
    path2.style.transition = path2.style.WebkitTransition = 
     'none'; 
    // Set up the starting positions 
    path2.style.strokeDasharray = length + ' ' + length; 
    path2.style.strokeDashoffset = length; 
    // Trigger a layout so styles are calculated & the browser 
    // picks up the starting position before animating 
    path2.getBoundingClientRect(); 
    // Define our transition 
    path2.style.transition = path2.style.WebkitTransition = 
     'stroke-dashoffset 0.45s linear'; 
    // Go! 
    path2.style.strokeDashoffset = '0'; 

    document.getElementById("container2").style.visibility = "visible"; 
}; 

function event3() { 
    //paths 
    var path3 = document.querySelector('#container3 #path_3'); 
    var length = path3.getTotalLength(); 
    console.log(path3.getTotalLength()); 
    // Clear any previous transition 
    path3.style.transition = path3.style.WebkitTransition = 
     'none'; 
    // Set up the starting positions 
    path3.style.strokeDasharray = length + ' ' + length; 
    path3.style.strokeDashoffset = length; 
    // Trigger a layout so styles are calculated & the browser 
    // picks up the starting position before animating 
    path3.getBoundingClientRect(); 
    // Define our transition 
    path3.style.transition = path3.style.WebkitTransition = 
     'stroke-dashoffset 0.4s linear'; 
    // Go! 
    path3.style.strokeDashoffset = '0'; 

    document.getElementById("container3").style.visibility = "visible"; 
}; 


window.setTimeout(function() { 
    event(); 
}, 1); 

window.setTimeout(function() { 
    event2(); 
}, 550); 

window.setTimeout(function() { 
    event3(); 
}, 1100); 

так что я должен был бы внести изменения в них, но большинство из него одно и то же, так как я сделал бы это дало этот код? Большое спасибо.

+6

'имя функции (nr) {alert (nr); } '? – Sirko

+0

, если вам действительно нужно сделать отдельные функции, которые я предполагаю, что вы этого не сделаете, вы можете использовать eval() в цикле, но вместо этого я бы использовал параметр – zgr024

+0

. Это те фактические функции, которые вы используете? – Turnip

ответ

2

Создайте функцию с парами:

function name(myNumber) { 
    alert(myNumber); 
} 
name(1); 
name(2); 
name(3); 
1

Вы вызываете их в каком-то момент, не так ли? Так почему бы просто не сделать эту функцию:

function name(i) { 
    alert(i); 
} 

И называть его name(1), name(2), name(3), и т.д.

2

Используйте петли и параметр

function name(x) { 
    alert(x); 
} 

for (var i = 1; i <=300; i++) { 
    name(i); 
} 
2

Используйте параметр с функцией:

function name(number) { 
    alert(number); 
} 

Значит, вы могли бы назвать это name(1), name(2), name(3) и т.д.

Если вы хотели сделать это для каждого числа от 1 до 300, можно использовать для цикла:

for (var i = 0; i <= 300; i++) { 
    name(i); 
} 

Если вы хотите начать с 1, только изменения var i = 0 - var i = 1.

Смежные вопросы