2010-07-16 6 views
0

je le javascript suivantjavascript cacher/montrer échoue dans IE8

function hide(id) 
{ 
    var ele = document.getElementById(id); 
    if ((ele.style.display == 'none') || (ele.style.display == '')) { 
    try{ 
    ele.style.display = 'table-row'; 
    } 
    catch (e) 
    { 
    ele.style.display='block'; 
    }} 
    else {ele.style.display = 'none';} 
} 

qui fonctionne dans IE7, chrome, ff, mais échoue dans IE8

Je dois le faire fonctionner même dans IE8 si il échoue en chrome ou ff.

Je crois que la question est 'ele.style.display = 'table-row'

des idées? merci à l'avance

+0

Qu'entendez-vous par «échoue»? L'instruction 'try' devrait intercepter n'importe quelle erreur et mettre' display' à 'block'? – ScottS

+0

S'appuyer sur un navigateur pour lancer une exception parce que "table-row" n'est pas une valeur "display" valide pour certains éléments n'est pas une bonne idée en premier lieu, car elle n'est * pas * invalide. – Pointy

Répondre

-1

Pourquoi utilisez-vous pas:

function toggle(id) { 
    var el = document.getElementById(id); 
    el.style.display = (el.style.display == "none" || el.style.display == "") ? "block" : "none"; 
} 
+0

Parce que définir aveuglément quelque chose sur "display: block" n'est pas une bonne idée. Et si ça devait être "display: inline"? Ou "affichage: table-cellule"? – Pointy

0

Je ne sais pas ce que vous vivez comme un échec dans IE8, mais vous pourriez changer dans votre if ceci:

ele.style.display == '' 

à ceci:

ele.style.display == undefined