kes*_*v84 4 html javascript onclick
如何向现有的onclick事件添加更多行为,例如,如果现有对象看起来像
<a href="http://abc" onclick="sayHello()">link</a>
<script>
function sayHello(){
alert('hello');
}
function sayGoodMorning(){
alert('Good Morning');
}
</script>
Run Code Online (Sandbox Code Playgroud)
我怎样才能为onclick添加更多行为,以及以下内容
alert("say hello again");
sayGoodMorning()
Run Code Online (Sandbox Code Playgroud)
最诚挚的问候,凯沙夫
Anu*_*rag 10
这是最脏的方式:)
<a href=".." onclick='sayHello();alert("say hello again");sayGoodMorning()'>.</a>
Run Code Online (Sandbox Code Playgroud)
这是一个有点理智的版本.将所有东西包装成一个函数:
<a href=".." onclick="sayItAll()">..</a>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
function sayItAll() {
sayHello();
alert("say hello again");
sayGoodMorning();
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法.使用事件注册模型而不是依赖于onclick属性或属性.
<a id="linkId" href="...">some link</a>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var link = document.getElementById("linkId");
addEvent(link, "click", sayHello);
addEvent(link, "click", function() {
alert("say hello again");
});
addEvent(link, "click", sayGoodMorning);
Run Code Online (Sandbox Code Playgroud)
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");
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果必须按顺序运行所有3个操作,那么您仍应继续将它们包装在单个函数中.但这种方法仍然排在第二种方法之上,尽管看起来有点冗长.
var link = document.getElementById("linkId");
addEvent(link, "click", function() {
sayHello();
alert("say hello again");
sayGoodMorning();
});
Run Code Online (Sandbox Code Playgroud)
另一种未提及的方法是捕获当前分配给该element.onclick属性的函数,然后分配一个包装旧函数的新函数.一个简单的实现演示将是类似的
function addEvent(element, type, fn) {
var old = element['on' + type] || function() {};
element['on' + type] = function () { old(); fn(); };
}
var a = document.getElementById('a');
function sayHello(){
alert('hello');
}
function sayGoodMorning(){
alert('Good Morning');
}
addEvent(a, 'click', sayHello);
addEvent(a, 'click', sayGoodMorning);
Run Code Online (Sandbox Code Playgroud)
在这里工作演示
| 归档时间: |
|
| 查看次数: |
13365 次 |
| 最近记录: |