7

这适用于 Firefox,但不适用于 IE。任何帮助将非常感激!谢谢!

  var form = document.getElementById('theform')
    /* create the event handler */
    form.gen.onclick = function( evt ) {
        var f = evt.target.form
        var y = f.year.value
        var m = f.month.value
        genCalendar( document, y, m, 'theCalendar' )
    }
4

5 回答 5

15

要在符合标准的浏览器和 IE 中获取事件的目标,请使用

var target = evt ? evt.target : window.event.srcElement;

在 MDC上有一个事件对象的不同属性的概述。

于 2009-06-06T20:34:29.600 回答
1

如前所述,IE 不会将事件对象作为参数传递。尝试这个:

var form = document.getElementById('theform')
  /* create the event handler */
  form.gen.onclick = function( evt ) {
    if(!evt)
      evt = window.event;
    var f = evt.target.form
    var y = f.year.value
    var m = f.month.value
    genCalendar( document, y, m, 'theCalendar' )
}

或者更好的是,使用跨浏览器库,例如Prototype.jsjQuery

于 2009-06-06T20:18:45.780 回答
1
  • 这个脚本什么时候运行?在 DOM 完全加载后,您可能必须在加载时运行此脚本
<脚本>

函数 go()
{
  alert('dom 已加载:现在注册事件处理程序') ;
}

</脚本>

<body onload=" go(); ">



</正文>

于 2009-06-06T21:02:52.553 回答
0

这就是为什么您应该考虑使用 javascript 库,例如 jquery、YUI 或原型。这些库抽象出基于浏览器的差异,从而简化了您的编码。

于 2009-06-06T20:18:49.740 回答
0

根据我自己的搜索,最成功的是这个

function clickHandler(e){
 var elem, evt = e ? e:event;
 if (evt.srcElement)  elem = evt.srcElement;
 else if (evt.target) elem = evt.target;

 alert (''
  +'You clicked the following HTML element: \n <'
  +elem.tagName.toUpperCase()
  +'>'
 )
 return true;
}

document.onclick=clickHandler;

来自那里非常有帮助和解释性的http://www.javascripter.net/faq/eventtargetsrcelement.htm

于 2014-07-01T17:49:58.620 回答