Событие Javascript IE

Это работает в 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' )
    }

person Community    schedule 06.06.2009    source источник
comment
вы должны заканчивать операторы с помощью ; - неявный ; в конце строки является резервным механизмом, и я бы подумал об использовании его в качестве плохой практики (другие могут не согласиться)   -  person Christoph    schedule 07.06.2009


Ответы (5)


Чтобы получить цель события как в браузерах, совместимых со стандартами, так и в IE, используйте

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

На сайте MDC есть обзор различных свойств объектов событий.

person Christoph    schedule 06.06.2009
comment
Я думаю, что это должно быть: var target = evt.target ? evt.target : window.event.srcElement; - person banana; 16.04.2015

Как уже упоминалось, 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.js или jQuery.

person gnud    schedule 06.06.2009
comment
также вам придется использовать .srcElement вместо .target в IE - person Christoph; 07.06.2009

  • Когда запускается этот скрипт? Возможно, вам придется запустить этот скрипт при загрузке после полной загрузки DOM.
<script>

function go()
{
  alert('dom is loaded:  register event handlers now') ;
}

</script>

<body onload=" go(); ">



</body>

person bobobobo    schedule 06.06.2009

Вот почему вам следует рассмотреть возможность использования библиотеки javascript, такой как jquery, YUI или прототип. Эти библиотеки абстрагируются от различий, основанных на браузерах, что упрощает кодирование.

person Glenn    schedule 06.06.2009

Из моих собственных поисков наиболее успешным было это

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< /а>

person Jetblackstar    schedule 01.07.2014