這裏是最骯髒的方式:)
<a href=".." onclick='sayHello();alert("say hello again");sayGoodMorning()'>.</a>
下面是一個有點理智的版本。裹成的一切功能:
<a href=".." onclick="sayItAll()">..</a>
的JavaScript:
function sayItAll() {
sayHello();
alert("say hello again");
sayGoodMorning();
}
而這裏的做的正確方法。使用事件註冊模型,而不是依賴onclick
屬性或屬性。
<a id="linkId" href="...">some link</a>
的JavaScript:
var link = document.getElementById("linkId");
addEvent(link, "click", sayHello);
addEvent(link, "click", function() {
alert("say hello again");
});
addEvent(link, "click", sayGoodMorning);
的addEvent
功能的跨瀏覽器實現如下(從scottandrew.com):
function addEvent(obj, evType, fn) {
if (obj.addEventListener) {
obj.addEventListener(evType, fn, false);
return true;
} else if (obj.attachEvent) {
var r = obj.attachEvent("on" + evType, fn);
return r;
} else {
alert("Handler could not be attached");
}
}
需要注意的是,如果所有3個行動必須順序運行,那麼你仍然應該繼續並將它們包裝在一個函數中。但是這種方法仍然是第二種方法,儘管看起來有點冗長。
var link = document.getElementById("linkId");
addEvent(link, "click", function() {
sayHello();
alert("say hello again");
sayGoodMorning();
});
+1 - 我會改變的唯一事情是從'addEvent'執行刪除'useCapture'跨保持一致性所有瀏覽器 – 2010-07-17 07:59:57
嗨Anurag, 我想添加新的行爲與JavaScript即獲得現有的腳本onclick事件並附加更多的行爲。 我可以添加多個onclick監聽器,但IE只有attachEvent,它不支持addEvent或addEventListeners,它可以用來添加多個事件監聽器 – keshav84 2010-07-17 08:01:55
@Russ - 好主意,將刪除'useCapture'。 – Anurag 2010-07-17 08:17:39