2009-06-06 5 views
7

Cela fonctionne dans Firefox, mais pas IE. Toute aide serait très appréciée! Merci!Javascript IE Événement

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') 
    } 
+6

vous devriez terminer les instructions avec ';' - l'implicite ';' aux fins de ligne est un mécanisme de repli et je considérerais l'utiliser comme une mauvaise pratique (d'autres peuvent être en désaccord) – Christoph

Répondre

1

Comme mentionné, IE ne transmet pas l'objet d'événement en tant que paramètre. Essayez ceci:

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

Ou mieux encore, utilisez une bibliothèque multi-navigateur, comme Prototype.js ou jQuery.

+0

aussi, vous devrez utiliser '.srcElement' à la place o f '.target' dans IE – Christoph

0

C'est pourquoi vous devriez envisager d'utiliser une bibliothèque javascript telle que jquery, YUI ou prototype. Ces bibliothèques éliminent les différences basées sur le navigateur, ce qui simplifie votre codage.

15

Pour obtenir la cible d'un événement dans les deux navigateurs conformes aux normes et IE, utilisez

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

Il y a un overview of the different properties of event objects au MDC.

+0

Je pense qu'il devrait être:' var target = evt.target? evt.target: window.event.srcElement; ' – banana

1
  • Quand ce script est-il exécuté? Vous pourriez avoir à exécuter ce script onload, après le DOM est entièrement chargé
 
<script> 

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

</script> 

<body onload=" go(); "> 



</body> 

0

De ma propre recherche le plus sucessful était cette

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; 

Provenant ther très utile et explicatif http://www.javascripter.net/faq/eventtargetsrcelement.htm