JavaScript addEvent 函数[重复]

问题描述 投票:0回答:5

我有一个

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
活动不起作用?

javascript dom-events
5个回答
4
投票

你拼错了

function
.


1
投票

试试这个:

function attachEvent(element, event, callbackFunction) {
    if (element.addEventListener) {
        element.addEventListener(event, callbackFunction, false);
    } else if (element.attachEvent) {
        element.attachEvent('on' + event, callbackFunction);
    }
};

0
投票
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);
    }
}

0
投票

与其以这种方式工作,不如试试这个:

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");
});

-3
投票

请试试这个。

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。此代码适用于所有浏览器。希望这能解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.