簡體   English   中英

如何組合兩塊相似的 JavaScript 代碼?

[英]How do I combine two blocks of similar JavaScript Code?

我正在嘗試找到一種編寫某種 function 的方法,這樣我就不必繼續重寫相同類型的代碼。

正如您在下面看到的,兩個代碼塊幾乎相同,除了一個用於lunchTimeSelector另一個用於napTimeSelector 有什么方法可以編寫 function 以便我可以通過將[lunchTimeSelector, napTimeSelector, dinnerTimeSelector]等數組輸入 function 來替換此代碼來自動執行此操作?

// Activates Lunch selector
var lunchTimeSelector =  document.getElementById("lunchTimeSelector");

var lunchEvent = function()
{
    lunchtime = lunchTimeSelector.value;
};

lunchTimeSelector.addEventListener("change", lunchEvent);





// Activates Nap-Time selector
var napTimeSelector =  document.getElementById("napTimeSelector");

var napEvent = function()
{
    naptime = napTimeSelector.value;
};

napTimeSelector.addEventListener("change", napEvent);

你可以像這樣實現它:

function addChangeEvent(id, handler){
    document.getElementById(id).addEventListener("change", handler);
}
[["lunchTimeSelector", function(){lunchtime = this.value}], 
 ["napTimeSelector", function(){naptime = this.value}]]
    .forEach(([id,handler])=>addChangeEvent(id,handler));

也許你可以試試:

// wrap all your logic 
function lanuchNapTimeSelector(id,state){

 var target =  document.getElementById(id);

// your handelers
 var lunchEvent = function()
 {
    lunchtime = target.value;
 };

 var napEvent = function()
 {
    naptime = target.value;
 };

 target.addEventListener("change", state === "nap" ? napEvent : 
 lunchEvent);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM