2017-08-30 73 views
0

我對js一無所知,但是我偶然發現了這一點,並想知道是否有人可以幫助我將這兩者合併爲一個。我可能最終會有大約30個。所有30個變量是否可以合併?每個customPush都會推送一個新的html。將多個javascript變量合併爲一個函數

謝謝。

var customPush1 = function (event) { 
myNavigator.pushPage('pageNav2.html', { data: { cardTitle: 
event.target.textContent } }) 
}; 
var customPush2 = function (event) { 
myNavigator.pushPage('pageNav3.html', { data: { cardTitle: event.target.textContent } }) 
}; 
+0

所以,你必須'customPush1' ...'customPush30'? –

+0

你是指什麼意思組合,..你還想要'customPush1'和'customPush2'功能。但是讓代碼共享? – Keith

+0

是的。該計劃是有30個按鈕加載一個單獨的HTML每個。 – user2358893

回答

1

是的。該計劃是有30個按鈕加載一個獨立的HTML中,每

在這種情況下,我會做它用不同的方式,而不是創建大量的功能,我想補充一些數據屬性的按鈕,使用委託事件。

但是,如果你想讓它可以在功能之間共享代碼。您可以創建一個返回函數的函數,並使用閉包傳遞參數。下面是一個例子。

function makePush(url) { 
 
    return function (event) { 
 
    myNavigator.pushPage(url, { data: { cardTitle: 
 
     event.target.textContent } }) 
 
    } 
 
} 
 

 
var 
 
    customPush1 = makePush('pageNav2.html'), 
 
    customPush2 = makePush('pageNav3.html');

這裏是使用上的按鈕委託的事件的例子。這是使用jQuery,因爲我發現它很快捷,但是沒有jQuery也可以做到。

$('body').on('click', '[data-custom-push]', function() { 
 
    var page = $(this).attr('data-custom-push'); 
 
    alert('Page = ' + page); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button data-custom-push="pageNav1.html">Button 1</button> <br> 
 
<button data-custom-push="pageNav2.html">Button 2</button> <br> 
 
<button data-custom-push="pageNav3.html">Button 3</button> <br> 
 
<button data-custom-push="pageNav4.html">Button 4</button> <br> 
 
<button data-custom-push="pageNav5.html">Button 5</button> <br> 
 
<button data-custom-push="xyz.html">Button 6</button> <br> 
 
<button data-custom-push="abc.html">Button 7</button> <br>