Javascript IE事件

Javascript IE事件,javascript,internet-explorer,events,javascript-events,Javascript,Internet Explorer,Events,Javascript Events,这在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

这在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' )
    }

如前所述,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' )
}

<>或者更好的是,使用一个跨浏览器库,如或./p>< p>这就是为什么你应该考虑使用JavaScript库比如jQuery、YUI或原型的原因。这些库提取了基于浏览器的差异,从而简化了编码。

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

var target = evt ? evt.target : window.event.srcElement;
在MDC有一个测试。

  • 这个脚本什么时候运行?在DOM完全加载后,您可能必须在加载时运行此脚本
函数go() { 警报('dom已加载:立即注册事件处理程序'); }
从我自己的搜索来看,最成功的是这个

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;
函数clickHandler(e){
var elem,evt=e?e:事件;
if(evt.srcement)elem=evt.srcement;
如果(evt.target)elem=evt.target,则为else;
警报(“”)
+'您单击了以下HTML元素:\n'
)
返回true;
}
document.onclick=clickHandler;

来源于非常有用和解释性的

同样,您必须使用
.srcElement
而不是
.target
在IES中,您应该使用
结束语句-隐式的
 var目标= EVT目标?evt.target:window.event.src元素
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;