我創建了一個圖像元素併爲其添加了屬性。 我也這樣做增加了一個功能,一個onclick事件:將兩個或更多功能添加到onclick事件
img.onclick = change;
現在我想添加具有參數到我的onclick事件的另一個功能。可以說我想補充:
retrieveClass(this.className);
我該怎麼做?喜歡的東西...
img.onclick = change, retrieveClass(this.className);
我創建了一個圖像元素併爲其添加了屬性。 我也這樣做增加了一個功能,一個onclick事件:將兩個或更多功能添加到onclick事件
img.onclick = change;
現在我想添加具有參數到我的onclick事件的另一個功能。可以說我想補充:
retrieveClass(this.className);
我該怎麼做?喜歡的東西...
img.onclick = change, retrieveClass(this.className);
如果你想有一個單一事件觸發多個事件處理程序聲明它,標準的方法是使用addEventListener
(doc )。
你的樣品中假設,change
是處理函數的名稱,retrieveClass(this.className)
返回另一個處理函數,你可以這樣做:
img.addEventListener('click', change);
img.addEventListener('click', retrieveClass(this.className));
img.onclick = function() { change; retrieveClass(this.className); }
創建一個包含函數調用然後綁定,爲您的onclick的包裝功能。
function wrap() {
change;
retrieveClass(img.className);
}
img.onclick = wrap();
您可以使用bind方法,它指的是功能,如:
img.onclick = retrieveClass.bind(img, img.className);
^^^
this
等同於:
img.onclick = function(){
retrieveClass(this.className);
}
這是最簡單的...
<img src="..." onclick="command1; command2;">
你應該使用一個功能離子爲此:
function imgClicked() {
command1;
command2;
}
當然,你也可以用
img.onclick = function() { command1; command2; }
的onclick屬性是不好的做法 –
是的,我寫的'這是最簡單的...'。你應該使用這個事件處理程序完全是我的看法。 – Richard
你應該使用事件處理程序是可以證明的方式,它會導致更好地分離關注點,javascript模塊化,重用等。 –