+ -
当前位置:首页 → 问答吧 → 请教各位大大

请教各位大大

时间:2010-05-19

来源:互联网

小弟以前自己写了个验证工具,凑合用了几个项目,现在比较有空,看了一些基本js知识,发现那个工具很是垃圾,想优化一下,网上找了个给元素注册事件的代码,似乎就是在本论坛找的,如下:



<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>hta</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <a href="#" id="link1" aaa="a">超链接link1</a>
        <a href="#" id="link2" aaa="b">超链接link2</a>
        <input type="button" value="attachEvent" onclick="addEvent();" />
    </div>
    </form>
</body>
</html>
<script type="text/javascript">
function AttachEvent(target, eventName, handler, argsObject)
{
    var eventHandler = handler;
    if(argsObject)
    {
        eventHander = function(e1)
        {
            handler.call(argsObject, e1);
        }
    }
    if(window.attachEvent)//IE
        target.attachEvent("on" + eventName, eventHander );
    else//FF
        target.addEventListener(eventName, eventHander, false);
}


function LinkClick(e)
{
       alert(e.srcElement.innerHTML);
    alert(this.name);
//    var target = e.srcElement || e.target;
//    alert(target.getAttribute('aaa'));
}

function addEvent()
{
var obj = new Object();
obj.name = "link1111";
var link1 = document.getElementById("link1");
AttachEvent(link1, "click",  LinkClick, obj);

obj = new Object();
obj.name = "link2222";
var link2 = document.getElementById("link2");
AttachEvent(link2, "click",  LinkClick, obj);
}


</script>


这段代码我不能理解的地方是
eventHander = function(e1)
        {
            handler.call(argsObject, e1);
        }

这个地方,e1是怎么来的?应该是个window.event对象吧。。
查资料也查不到,请各位赐教。。谢谢

作者: d925529   发布时间: 2010-05-19

先帮你框起来- -
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>hta</title> </head> <body> <form id="form1" runat="server"> <div> <a href="#" id="link1" aaa="a">超链接link1</a> <a href="#" id="link2" aaa="b">超链接link2</a> <input type="button" value="attachEvent" onclick="addEvent();" /> </div> </form> </body> </html> <script type="text/javascript"> function AttachEvent(target, eventName, handler, argsObject) { var eventHandler = handler; if(argsObject) { eventHander = function(e1) { handler.call(argsObject, e1); } } if(window.attachEvent)//IE target.attachEvent("on" + eventName, eventHander ); else//FF target.addEventListener(eventName, eventHander, false); } function LinkClick(e) { alert(e.srcElement.innerHTML); alert(this.name); // var target = e.srcElement || e.target; // alert(target.getAttribute('aaa')); } function addEvent() { var obj = new Object(); obj.name = "link1111"; var link1 = document.getElementById("link1"); AttachEvent(link1, "click", LinkClick, obj); obj = new Object(); obj.name = "link2222"; var link2 = document.getElementById("link2"); AttachEvent(link2, "click", LinkClick, obj); } </script>
 提示:您可以先修改部分代码再运行

作者: cwq2jxl   发布时间: 2010-05-19

看了一下 完全不懂 这段JS有啥用呢?

作者: cwq2jxl   发布时间: 2010-05-19

谢了。。这段js的作用是。。动态为控件追加事件并且能传递参数。。这个不重要。。我只是想知道
eventHander = function(e1)
        {
            handler.call(argsObject, e1);
        }
这个el是哪来的?

作者: d925529   发布时间: 2010-05-19