向元素添加事件

时间:2012-05-03 10:01:21

标签: javascript

我是javascript的新学习者,以下代码来自javascript权威指南。

function addEvent(elem, evtType, func)
{
   if (elem && typeof(elem) == "object")
   {

      if (elem.addEventListener)
      {
         elem.addEventListener(evtType, func, false);
      }

      else
      {
         elem["on" + evtType] = func;
      }
   }
}

为什么要添加

  if (elem.addEventListener)
  {
     elem.addEventListener(evtType, func, false);
  }

但是window.onload在每个浏览器下都能正常工作。以下是我的测试示例。

<script type="text/javascript">
         window.onload=myFuntion();
        function myFuntion(){
            alert("test");
        }
    </script>
</head>

<body>

    <h1> testtste </h1>
</body>

在IE ff。

下工作正常

1 个答案:

答案 0 :(得分:2)

直接分配不健全。

...并且您的代码无论如何都没有在加载时运行该函数。它立即运行它并将返回值(undefined)分配给onload对象。

如果我们解决了这个问题,那就进行演示:

  <script type="text/javascript">
      window.onload=myFuntion;

      function myFuntion(){
            alert("test");
       }
  </script>
  <script type="text/javascript">
      window.onload=myOtherFunction;

      function myOtherFunction(){
            alert("test2");
       }
  </script>

事件被覆盖。只会触发一个功能。

......来自权威指南的例子并不是很好。它回退到直接赋值(这使得它毫无意义),而不是尝试允许多事件绑定的旧的专有API(例如,对于IE 8及更低版本的attachEvent)。