OVH Cloud OVH Cloud

newbie fonction toogle affiche et cache sous Mozilla

5 réponses
Avatar
pcouas
Bonsoir

J'ai besoin d'une fonction toute simple qui affiche ou masque un
bouton, elle fonctionne sous IE mais pas sous Mozzila, ou est mon
erreur ?
Mon bouton est accessible par son id que je passe en argument

Merci d'avance
Philippe


var ns4=document.layers
var ie4=document.all
var ns6=document.getElementById&&!document.all

function Affiche_Cache(nObjet) {
if(ie4) { // Internet explorer
eval(nObjet).style.visibility =
(eval(nObjet).style.visibility=='visible'?'hidden':'visible');
}
else if(ns4) { // Netscape 4.x
document.eval(nObjet).visibility =
(document.eval(nObjet).visibility=='show'?'hidden':'show');
}
else if(ns6) { // Netscape 6 (mozilla)
var divns6 = getElementById(nObjet);
divns6.style.visibility =
(divns6.style.visibility=='visible'?'hidden':'visible');
}
}

5 réponses

Avatar
Olivier Miakinen

J'ai besoin d'une fonction toute simple qui affiche ou masque un
bouton, elle fonctionne sous IE mais pas sous Mozzila, ou est mon
erreur ?


La principale erreur est là :

var ns4=document.layers
var ie4=document.all
var ns6=document.getElementById&&!document.all


Dans le code qui suit, tu n'utilises nulle part document.layers ni
document.all, il n'y a donc aucune raison de les tester. De plus,
il n'y a aucune raison d'appeler ie4 un navigateur qui connaîtrait
document.all, ni ns6 un qui ne le connaîtrait pas.

function Affiche_Cache(nObjet) {
if(ie4) { // Internet explorer
eval(nObjet).style.visibility > (eval(nObjet).style.visibility=='visible'?'hidden':'visible');
}
else if(ns4) { // Netscape 4.x
document.eval(nObjet).visibility > (document.eval(nObjet).visibility=='show'?'hidden':'show');
}
else if(ns6) { // Netscape 6 (mozilla)
var divns6 = getElementById(nObjet);
divns6.style.visibility > (divns6.style.visibility=='visible'?'hidden':'visible');
}
}


Autre erreur : si tu tombes sur un navigateur qui ne connaît pas layers
mais qui connaît all et getElementById (Opera par exemple), cette
fonction ne fait rien.

À moins que tu ne tiennes absolument à ce que ça fonctionne sur des
navigateurs du siècle dernier, je pense que ceci devrait faire
l'affaire :

function Affiche_Cache(nObjet) {
var element = getElementById(nObjet);
element.style.visibility (element.style.visibility == 'visible')
? 'hidden' : 'visible';
}

Avatar
YD
La principale erreur est là :

var ns4=document.layers
var ie4=document.all
var ns6=document.getElementById&&!document.all [...]



Tu as tout à fait raison mais...

À moins que tu ne tiennes absolument à ce que ça fonctionne sur des
navigateurs du siècle dernier, je pense que ceci devrait faire
l'affaire :

function Affiche_Cache(nObjet) {
var element = getElementById(nObjet);
element.style.visibility > (element.style.visibility == 'visible')
? 'hidden' : 'visible';
}


Tu as laissé l'erreur du script initial ! Dans cette ligne :

var element = document.getElementById(nObjet);

pas oublier document...
Et pour tenir compte d'un récent post

element.style.visibility = (element.style.visibility == 'hidden')
?'' : 'hidden';

ou plus concis

element.style.visibility = element.style.visibility ? '' : 'hidden';

(tester une chaîne vide --> false)

Ce qui évite d'avoir à ajouter un attribut style dans le HTML
(sauf si la situation initiale est hidden bien sûr).

Donc, récapitulons :

function Affiche_Cache(nObjet) {
var element = document.getElementById(nObjet);
element.style.visibility = element.style.visibility ? '' : 'hidden';
}


--
Y.D.


Avatar
ASM

À moins que tu ne tiennes absolument à ce que ça fonctionne sur des
navigateurs du siècle dernier, je pense que ceci devrait faire
l'affaire :

function Affiche_Cache(nObjet) {
var element = getElementById(nObjet);


var element = document.getElementById(nObjet);
^^^^^^^^
element.style.visibility > (element.style.visibility == 'visible')
? 'hidden' : 'visible';
}



function Affiche_Cache(nObjet) {
nObjet = document.getElementById(nObjet).style;
nObjet.visibility = (nObjet.visibility == 'hidden')?
'visible' : 'hidden';
}

--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé

Avatar
Olivier Miakinen

Tu as laissé l'erreur du script initial ! Dans cette ligne :

var element = document.getElementById(nObjet);

pas oublier document...


Ah oui, je n'avais rien vu. Merci aussi à ASM qui a l'½il aussi aiguisé
que le tien.

Et pour tenir compte d'un récent post

[...]

function Affiche_Cache(nObjet) {
var element = document.getElementById(nObjet);
element.style.visibility = element.style.visibility ? '' : 'hidden';
}


Y a plus qu'à.

Avatar
pcouas
Merci à tous
C'est OK

Philippe