2011-11-28 3 views
2

내가 다른이 같은 매개 변수와 함께 그것을 배수 시간을 적용 displayTabPanel 기능과 메신저를 가지고 : 더 나은 방법이, 그 통화의메서드를 여러 번 적용하는 것이 더 좋은 방법일까요?

var display = function() { 

    displayTabPanel(tab1, tab1_name, tab1_width, tab1_height, tab1_btn); 

    displayTabPanel(tab2, tab2_name, tab2_width, tab2_height, tab2_btn); 

    displayTabPanel(tab3, tab3_name, tab3_width, tab3_height, tab3_btn); 

}; 

var displayTabPanel = function(tab, tab_name, tab_width, tab_height, tab_btn){ 
    //... 
}; 

내가이 적어도 9, 그 정말 추악한을 넣어 이런 식으로 이것을하기 위해 ?

+0

난 이해가 안 돼요. 배열은 거의 모든 언어에서 거의 기본 구문입니다. –

답변

5

:

function displayTabPanels(panels) { 
    for(i in panels) { 
     tab = panels[ i ]; 

     displayTabPanel(tab.id, tab.name, tab.width, tab.height, tab.class); 
    } 
} 

var panels = [ 
    {id: 'tab1', name: 'tab1_name', width: 'tab1_width', height: 'tab1_height', class: 'tab1_btn'}, 
    {id: 'tab1', name: 'tab1_name', width: 'tab1_width', height: 'tab1_height', class: 'tab1_btn'}, 
    {id: 'tab1', name: 'tab1_name', width: 'tab1_width', height: 'tab1_height', class: 'tab1_btn'}, 
]; 

displayTabPanels(panels); 
+0

YUI의 YAHOO.Dom.batch 메서드를 사용할 때 감사합니다. YAHOO.util.Dom.batch (panels, displayTabPanel); (패널의 각 요소에 displayTabPanel을 적용 함) –

+0

No Problem! 다행스럽게 도울 수있어! –

2

배열과 for 루프를 사용하여 해당 멤버가 포함 된 탭 객체를 만드십시오!

특정 javascript 구문을 모르지만 기본적으로 tab1, tab2, tab3 등이 아니라 탭, 탭 이름, 탭 너비, 탭 높이, 탭 버튼의 배열 (또는 목록)이 있습니다. 그럼 당신은이 작업을 수행 할 것 :

[pseudocode] 
for each tab t in array 
    displayTabPanel(t.tab, t.name, t.width, t.height, t.button); 
[/pseudocode] 

그것은 아마도 더 나은 디자인은 오히려 각각에 대해 별도의 배열을하는 것보다,이 객체의 내부 탭 개체 및 저장 탭, 이름, 너비, 높이 및 버튼을 만들기 위해 현명합니다. 당신이 정말로 별도의 배열을 원한다면 당신은 같은 것을 할 수 있습니다

[pseudocode] 
for (i = 0; i < 9; i++) 
    displayTabPanel(tab[i], name[i], width[i], height[i], button[i]); 
[/pseudocode] 
1

당신은 매개 변수를 포함하는 객체 (JSON)을 사용할 수 있습니다. 그리고 아주 간단한 루프가이 모든 PARAMS와 displayTabPanel를 호출하게됩니다

var params = [{id:"tab1", name:"bla", width:300, ...}, {...}, ...] 

: 어느 이름

var params = [["tab1", "tab1_name", "tab1_width", ...], [...], ...] 

또는 더 나은처럼, 같은 이름. 나는 이것을 당신에게 운동으로 남겨 줬지만, 필요하다면 도움을 줄 수 있습니다. BTW에서는 두 번째 솔루션을 사용하여 객체를 displayTabPanel에 직접 전달할 수 있습니다. 이렇게하면 매우 풍부하고 우아한 코드로 이어질 수 있습니다.

0

인수 배열을 반복 할 수 있고 각 인수에 대해 함수를 호출 할 수 있습니다. 그 단지 가독성 것은 다음 작업을 수행 할 수 있다면

for (params in [ 
    [tab1, tab1_name, ... tab1_btn], 
    [tab2, tab2_name, ... tab2_btn], 
    ... 
]) displayTabPanel.apply(params); 
관련 문제