使用 javascript 向 HTML 元素添加事件处理程序

IT技术 javascript
2021-01-20 16:07:13

当任何用户单击它时,我想向段落添加一个事件处理程序。例如,我有一个段落,当用户单击它时会显示警报,但没有在 HTML 上使用“onclick”。

 <p id="p1">This is paragraph Click here..</p>
 <a href="http://www.google.com" id="link1" >test</a>
 document.getElementById('p1').onmouseover  = paragraphHTML; 
3个回答

您可以添加事件侦听器。
史密斯。像这样:

 var el = document.getElementById("p1");
if (el.addEventListener) {
        el.addEventListener("click", yourFunction, false);
    } else {
        el.attachEvent('onclick', yourFunction);
    }  

(感谢@Reorx)

此处说明

完整代码(在 Chrome&IE7 中测试):

<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
        <script type="text/javascript">
            window.onload =function (){
            var el = document.getElementById("p1");
            if (el.addEventListener) {
                el.addEventListener("click", yourFunction, false);
            } else {
                el.attachEvent('onclick', yourFunction);
            }
            };
            function yourFunction(){
                alert("test");
            }
        </script>
    </head>
    <body>
        <p id="p1">test</p>

    </body>
</html>
你说你不希望“onclick”事件发生在 p1。你有吗?el.addEventListener("click", yourFunction, false) 正在向“onclick”添加事件
2021-03-24 16:07:13
嗨,它在 Firefox 中工作,但即存在一个问题,它说对象不支持此属性或方法
2021-03-25 16:07:13
@Jun1st:嗯。你说的对。据我了解 adilahmed 只是不想让它内联
2021-04-04 16:07:13
@adilahmed:在 Chrome 中完美运行。你得到什么错误?你在哪里添加脚本?在 window.onload 函数里面?
2021-04-04 16:07:13
大家好,我在 Firefox 和 Ie 中都喜欢这个,但它只能在 Firefox 中工作
2021-04-11 16:07:13

为了适应大多数情况,您可以编写一个函数来处理此问题:

var bindEvent = function(element, type, handler) {
    if (element.addEventListener) {
        element.addEventListener(type, handler, false);
    } else {
        element.attachEvent('on'+type, handler);
    }
}
在 IE 中,此函数会发现要绑定的元素没有“addEventListener”属性,然后将处理程序分配给它的“onTYPE”属性,例如“onclick”。
2021-04-02 16:07:13

tabIndex为您的p元素添加一个属性,然后您就可以使用该onfocus功能。

演示:http : //jsfiddle.net/9y7CL/