2015-06-25 47 views
0

我創建了一個圖像元素併爲其添加了屬性。 我也這樣做增加了一個功能,一個onclick事件:將兩個或更多功能添加到onclick事件

img.onclick = change; 

現在我想添加具有參數到我的onclick事件的另一個功能。可以說我想補充:

retrieveClass(this.className); 

我該怎麼做?喜歡的東西...

img.onclick = change, retrieveClass(this.className); 

回答

3

如果你想有一個單一事件觸發多個事件處理程序聲明它,標準的方法是使用addEventListenerdoc )。

你的樣品中假設,change是處理函數的名稱,retrieveClass(this.className)返回另一個處理函數,你可以這樣做:

img.addEventListener('click', change); 
img.addEventListener('click', retrieveClass(this.className)); 
1

img.onclick = function() { change; retrieveClass(this.className); }

0

創建一個包含函數調用然後綁定,爲您的onclick的包裝功能。

function wrap() { 
    change; 
    retrieveClass(img.className); 
} 

img.onclick = wrap(); 
1

您可以使用bind方法,它指的是功能,如:

img.onclick = retrieveClass.bind(img, img.className); 
           ^^^ 
           this 

等同於:

img.onclick = function(){ 
    retrieveClass(this.className); 
} 
1

這是最簡單的...

<img src="..." onclick="command1; command2;"> 

你應該使用一個功能離子爲此:

function imgClicked() { 
    command1; 
    command2; 
} 

當然,你也可以用

img.onclick = function() { command1; command2; } 
+1

的onclick屬性是不好的做法 –

+0

是的,我寫的'這是最簡單的...'。你應該使用這個事件處理程序完全是我的看法。 – Richard

+1

你應該使用事件處理程序是可以證明的方式,它會導致更好地分離關注點,javascript模塊化,重用等。 –

相關問題