1

J'ai la ligne suivante de code qui fonctionne très bien dans Firefox, Chrome et Safari, mais pas dans Internet Explorer 8.événement onclick Javascript ne fonctionne pas dans Internet Explorer 8

<a href="javascript:void(0);" onclick="showHide('reading','type_r','r');">Show me the example</a> 

La fonction montre simplement et peaux un div en cliquant sur le lien hypertexte.

Y at-il quelque chose qui me manque ici?

C'est la fonction showhide:

function showHide(elementId,parentId,qtype) { 

if (document.getElementById && !document.all) { 

    var elementParent = document.getElementById(parentId); 
    var element = document.getElementById(elementId); 
    var upArrowId = 'up-arrow-'+qtype; 
    var downArrowId = 'down-arrow-'+qtype; 

    if(element.style.visibility == 'hidden'){ 

     elementParent.style.height = 'auto'; 
     element.style.visibility = 'visible'; 
     document.getElementById(upArrowId).style.visibility = 'visible'; 
     document.getElementById(downArrowId).style.visibility = 'hidden'; 
    } 
    else if(element.style.visibility == 'visible'){ 
     element.style.visibility = 'hidden'; 
     elementParent.style.height = '50px'; 
     document.getElementById(upArrowId).style.visibility = 'hidden'; 
     document.getElementById(downArrowId).style.visibility = 'visible';  
    } 
} 

}

Merci.

Répondre

1

!document.all exclut IE de l'exécution de code de votre fonction

+0

Merci, cela a fonctionné. –

1

Votre code Javascript doit être le suivant:!

function showHide(elementId,parentId,qtype) { 

    var elementParent = document.getElementById(parentId); 
    var element = document.getElementById(elementId); 
    var upArrowId = 'up-arrow-'+qtype; 
    var downArrowId = 'down-arrow-'+qtype; 

    if(element.style.visibility == 'hidden'){ 

     elementParent.style.height = 'auto'; 
     element.style.visibility = ''; 
     document.getElementById(upArrowId).style.visibility = ''; 
     document.getElementById(downArrowId).style.visibility = 'hidden'; 
    } 
    else if(element.style.visibility == ''){ 
     element.style.visibility = 'hidden'; 
     elementParent.style.height = '50px'; 
     document.getElementById(upArrowId).style.visibility = 'hidden'; 
     document.getElementById(downArrowId).style.visibility = '';  
    } 
} 

Le document.all est l'arrêt IE pour commencer. De plus, vous ne devriez pas vérifier visibilty == 'visible' car cela ne fonctionnera pas pour commencer. (La valeur par défaut est "", vous devez donc l'utiliser sauf si vous avez explicitement défini visibility = "visible" sur l'élément)

Mais surtout - google jQuery! Vous allez remplacer tout cela avec element.toggle() avant de le savoir!

+0

Les gens devraient vraiment cesser de recommander jQuery .. Ce n'est pas une solution du tout! –

+0

En quelle année est-ce dans votre fuseau horaire? – BritishDeveloper

+0

2013, les gens devraient cesser d'utiliser une bibliothèque obsolète inefficace! et surtout en les recommandant comme solutions! –

Questions connexes