2012-05-10 5 views
1

Je viens de réaliser que mon site pas fonctionne correctement dans IE. Cela fonctionne parfaitement dans Chrome et Firefox. Dans IE, le problème est, les éléments effectués par javascript, n'apparaissent pas. J'ai Javascript activé, donc je ne sais pas comment c'est différent des autres navigateurs.Javascript ne fonctionne pas dans IE

Il est quand je suis en utilisant la fonction toggle_visibility:

function toggle_visibility_1(id) { 
    var e = document.getElementById(id); 
    if(e.style.display = 'inline') 
    e.style.display = 'none'; 
} 
function toggle_visibility_2(id) { 
    var e = document.getElementById(id); 
    if(e.style.display = 'none') 
    e.style.display = 'inline'; 
} 

Le site est ici: http://www.dillonbrannick.com/ bien sûr, il n'y aura pas de problème notable, sauf dans IE et si dans IE, il ne peut pas être évident, si j'espère que je l'ai décrit assez bien.

Il semble donc que je en quelque sorte le problème résolu fonctionne comme il devrait le voir ici si vous voulez: http://testerwebby.tumblr.com/ Je ne sais pas ce que je faisais, mais je vais bientôt avoir déployé sur mon site, Merci pour votre aide.

+2

'=' et '=='/'===' est assez différent en Javascript. Vous avez de la chance que cela fonctionne dans Chrome et Firefox. – kapa

+0

@ bažmegakapa Faites-en une réponse! –

+1

@AndrewMarshall Ne disposez pas de temps maintenant pour faire une réponse de qualité en ce moment. J'espère que quelqu'un ira plus loin que de copier mon commentaire et de l'afficher comme réponse :). – kapa

Répondre

8

Vous effectuez l'affectation, pas une comparaison:

// Sets the value of display 
if (e.style.display = 'none') 

Vous devez utiliser == (valeur) ou === (valeur et le type) pour tester l'égalité:

// Tests the value of display 
if (e.style.display == "none") 

Si tout ce que vous voulez à faire est de basculer entre inline et none, ce qui suit serait mieux:

function toggle_visibility(id) { 
    var e = document.getElementById(id); 
    e.style.display = (e.style.display === "none") ? "inline" : "none" ; 
} 

Démo: http://jsbin.com/uyawop/edit#javascript,html

+1

En général, optez pour l'égalité triple, car elle est plus stricte que la double égalité. Dans ce cas, il n'y a pas de différence. – Havvy

+0

Je ne suis pas capable de faire fonctionner ça, quand je change simplement le = 'none' == 'none', ça marche, mais quand je le fais sur les deux fonctions, rien ne se passe. – dillonbrannick

+0

whoops, appuyez sur Entrée pour retourner, mais il posté. Donc, quand j'utilise votre troisième morceau de code en place, il bascule en permanence, où je le veux simplement basculer une fois. Et même lorsque j'ai utilisé votre code, il ne semblait toujours pas fonctionner dans IE. Merci Pour toute la réponse, mais je pense qu'il y a encore quelque chose qui ne va pas. – dillonbrannick

Questions connexes