我有一个
addEvent
功能:
function addEvent(elem, event, func ) {
if (typeof (window.event) != 'undefined')
elem.attachEvent('on' + event, func);
else
elem.addEventListener(event, func, false);
}
<a href="#" id="link">link</a>
我正在尝试将以下内容添加到
window.onload
:
addEvent(window, 'load', function (){
// add another event
var link= document.getElementById('link');
addEvent(link, 'click', function () {alert('Hi'); });
});
我的问题是:为什么
link
活动不起作用?
你拼错了
function
.
试试这个:
function attachEvent(element, event, callbackFunction) {
if (element.addEventListener) {
element.addEventListener(event, callbackFunction, false);
} else if (element.attachEvent) {
element.attachEvent('on' + event, callbackFunction);
}
};
typeof (window.event) != 'undefined'
当我测试你的代码时,它在 chrome 上真的不起作用! 这样就可以了:
!!window.attachEvent
我认为在
if..esle
中使用大括号是一个很好的做法。
function addEvent(elem, event, func ) {
if (!!window.attachEvent){
elem.attachEvent('on' + event, func);
}
else{
elem.addEventListener(event, func, false);
}
}
与其以这种方式工作,不如试试这个:
Element.prototype.events = {};
Element.prototype.addEvent = function (event, callBack) {
if (this.events["on" + (event.replace("on", ""))] == undefined) {
this.events["on" + (event.replace("on", ""))] = [];
}
this.events["on" + (event.replace("on", ""))].push(callBack);
if (this["on" + (event.replace("on", ""))] == undefined) {
this["on" + (event.replace("on", ""))] = function (e) {
for (i in this.events["on" + (event.replace("on", ""))]) {
this.events["on" + (event.replace("on", ""))][i](e);
}
}
}
}
你会这样使用它:
document.body.addEvent("click",function(){
alert("Test");
});
document.body.addEvent("click",function(){
alert("Test 2");
});
document.getElemntById("inputtest").addEvent("keyup",function(){
alert("Input keyup");
});
请试试这个。
function addEvent(elem,event,func)
{
var evn = "on"+event;
elem[evn] = func;
}
var obj = document.getElementById("link");
addEvent(obj,"click",function(){alert('hi');});
这里使用这段代码你不需要担心 attachEvent 或 addEventListener。此代码适用于所有浏览器。希望这能解决您的问题。