2013-11-20 2 views
0

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

функция будет вводить некоторые HTML внутри страницы, и этот HTML должен повторить для каждого элемента передается функции

давайте предположим, что это:

element1 = {name:"john",image:"/john.jpg"} 
element2 = {name:"jack",image:"/jack01.jpg"} 
element3 = {name:"Linda",image:"/001.jpg"} 

option1 = [element1,element2] 
option2 = [element1,element2,element3] 

function injectPeople (opt){ 
    i=0 
    foreach opt { 
    inject opt[i].name; 
    injectelsewhere opt[i].image 
    i++ 
} 

} 

Я хотел бы вызвать функцию следующим образом:

injectPeople (option1); 

или

injectPeople (option2); 

или еще

injectPeople(); 

которым не будет вводить любое другое что.

есть ли чистый способ достичь этого? лучше всего подходят объекты и массивы?

PS: название немного странно, но я не нашел способа описать его лучше, не стесняйтесь редактировать его, чтобы сделать вопрос более понятным.

+0

Это, вероятно, будет проще передать его в качестве одного аргумента массива. Это достаточно чисто? – Johan

+0

Да, вы имеете в виду, что просто не определяете «элементы» –

+0

Ну, они все равно должны быть определены внутри массива, очевидно. Я не вижу здесь этой проблемы. – Johan

ответ

1

Это то, что вам нужно?

var elements = [{name:"john",image:"/john.jpg" }, 
       {name:"jack",image:"/jack01.jpg"}, 
       {name:"Linda",image:"/001.jpg"}], 
    option1 = elements.slice(1, elements.length), 
    option2 = elements; 

function injectPeople (opts){ 

    if(!opts) throw new ReferenceError('opts not defined'); 

    $.each(opts, function(i, v){ 
     //do inject stuff 
     console.log(v.name, v.image); 
    });  
} 

injectPeople(option1); 

http://jsfiddle.net/sWB64/

1

В более поздних версиях браузеров, вы могли бы просто использовать Array.prototype.forEach():

option1.forEach(function (a){ 
    injectPeople(a); 
}) 
Смежные вопросы