2014-02-28 75 views
0

我打算通過switch語句對我的JS代碼進行分組。我想,它會超過50例。在switch語句中有多少個case適合

這是太多了嗎?如果我的擔心是正確的,switch語句應處理多少個案件?

//編輯

就在的fancybox的情況下,我想他們組通過使用switch語句一個函數中,像這樣:

function openFancybox(object){ 
    switch(object) 
    { 
     case '.edit': 
      width = 900; 
      height = 400; 
     break; 

     case '.friend': 
      width = 700; 
      height = 300; 
     break; 

     case '.follow': 
      width = 'auto'; 
      height = 'auto'; 
     break; 

     case '.global': 
      width = 'auto'; 
      height = 'auto'; 
     break; 

    } 
    $(object).fancybox({ 
     'titlePosition'  : 'inside', 
     'transitionIn'  : 'none', 
     'transitionOut'  : 'none', 
     'centerOnScroll' : true, 
     hideOnOverlayClick:false, 
     hideOnContentClick:false, 
     'autoDimensions': false, 
     'centerOnScroll' : true, 
     'width': width, 
     'height': height, 
    }); 
} 
+0

什麼你的情況包含? –

+0

應該有可能以不同的方式做。你有沒有考慮過有關鍵值的字典/地圖,關鍵在哪裏,值可以是你從該函數返回的任何信息,還是對函數的引用? – Sky

+0

請更改問題,添加更多詳細信息(某些代碼或至少(高級)描述)。就目前而言,你的問題太抽象了 - 因此最後的選票和我的-1。 – raina77ow

回答

3

在這種特殊情況下我不得不選擇了地圖(JS對象)解決方案,其中鍵是類名,值是數組([寬度,高度])結構。例如:

var fancyBoxSettings = { 
    edit: [900, 400], 
    friend: [700, 300], 
    some: [42, 42], 
    more: [420, 420] 
}; 

...最小化複製代碼(所有這些width =, height =break等)。然後,我會設法與助手功能檢索這些值:

function getFancyBoxDimensions(className) { 
    var dimensions = fancyBoxSettings[className] || ['auto', 'auto']; 
    return { width: dimensions[0], height: dimensions[1] }; 
} 

所以可以像這樣使用:

var fbxSettings = { 
    titlePosition  : 'inside', 
    transitionIn  : 'none', 
    transitionOut  : 'none' 
    // ... 
}; 
$.extend(fbxSettings, getFancyBoxDimensions(className)); 
$('.' + className).fancybox(fbxSettings); 
+0

非常感謝。你的方法真的讓我印象深刻。我剛剛實施,它完美的作品。我一直在想這個問題很長時間,最後它有一個完美的解決方案。再次感謝! – Lewis