2016-11-04 23 views
1

我做了一些功能,但他們都做了大致相同的事情。 我想結合這些功能到一個新的功能,可以重用的情況下,我需要一個像這樣的新功能..是否有可能這樣做,或者我只是浪費你和我的時間?如何將4個相同的功能合併爲一個可重用的新功能

下面是代碼:

function getBinding(selectedBinding) { 
    var b = elems.binding; 
    var selectedBinding = b.options[b.selectedIndex].value; 
    return selectedBinding; 
} 

// Getting the holes value 
function getHoles(selectedHoles) { 
    var h = elems.holes; 
    var selectedHoles = h.options[h.selectedIndex].value; 
    return selectedHoles; 
} 

// Getting the paper weight value 
function getPaperWeight(selectedPaperWeight) { 
    var pW = elems.paperWeight; 
    var selectedPaperWeight = pW.options[pW.selectedIndex].value; 
    return selectedPaperWeight; 
} 

// Getting the staples value 
function getStaples(selectedStapling) { 
    var s = elems.stapling; 
    var selectedStapling = s.options[s.selectedIndex].value; 
    return selectedStapling; 
} 

有什麼建議?

非常感謝!

+1

所有函數的參數根據您的代碼沒有任何用處。 –

+0

參數'selectedBinding'的用途是什麼? –

回答

0

你可以採取的元素作爲參數。

function getValue(element) { 
    var e = elems[element]; 
    return e.options[e.selectedIndex].value; 
} 
0

類似getByKey

// 
 
function getValueByKey(key) { 
 
    var elem = elems[key]; 
 
    var optionValue = elem.options[elem.selectedIndex].value; 
 
    return optionValue; 
 
}

0

我會得到道具類型作爲參數 -

function selectByPropAndIndex(prop){ 
    var elemByProp = elems[prop]; 
    var selected= elemByProp.options[elemByProp.selectedIndex].value; 
    return selected; 
} 
0

您可以使用partial application創建這樣的功能:

function getItems(elementType) { 
    return function(elements) { 
    var items = elements[elementType]; 
    return items.options[items.selectedIndex].value; 
    }; 
} 

var getBinding = getItems('binding'); 
var getHoles = getItems('holes'); 
var getPaperWeight = getItems('paperWeight'); 
var getStaples = getItems('stapling'); 

用法:

getBinding(elems); 
0

你可以試試這個:

function getSelectedProperty(property) { 
    var elem = elems[property]; 
    return elem.options[elem.selectedIndex].value; 
} 

還要注意的是你的原始碼ha有些問題。這些參數是無用的,因爲您正在每個函數內部定義一個新變量,這些變量會覆蓋參數名稱,因爲您爲其指定了相同的名稱。舉個例子:

function foo(x) { 
    var x = 5; // this x is not the same as the parameter x 
} 
0
function getBinding(selectedElement, type) { 
    switch(type) { 
     case binding: 
      var element = elems.binding; 
      break; 
     case hole: 
      var element = elems.holes; 
      break; 
     case paper: 
      var element = elems.paperWeight; 
      break; 
     case staples: 
      var element = elems.stapling; 
      break; 
    } 
    var selectedElement = element.options[element.selectedIndex].value; 
    return selectedElement; 
} 
0

這是我定了!

function getValue(selector){ 
    return parseInt(selector.options[selector.selectedIndex].value); 
}; 

謝謝大家!

相關問題