(javascript) Fonction pour cacher/Afficher
function afficher(nom, valeur)
{
if ( nom == undefined ) return;
if ( document.getElementById(nom) )
{
if ( valeur == 'hidden' || valeur == 'visible' )
document.getElementById(nom).style.visibility = valeur;
else if ( valeur == '' )
{
if ( document.getElementById(nom).style.display == 'none' )
document.getElementById(nom).style.display = 'block';
else
document.getElementById(nom).style.display = 'none';
}
else
document.getElementById(nom).style.display = valeur;
}
else if ( document.getElementsByName(nom).length > 0 )
{
if ( valeur == 'hidden' || valeur == 'visible' )
document.getElementsByName(nom)[0].style.visibility = valeur;
else if ( valeur == '' )
{
if ( document.getElementsByName(nom)[0].style.display == 'none' )
document.getElementsByName(nom)[0].style.display = 'block';
else
document.getElementsByName(nom)[0].style.display = 'none';
}
else
document.getElementsByName(nom)[0].style.display = valeur;
}
else
{
if ( valeur == 'hidden' || valeur == 'visible' )
nom.style.visibility = valeur;
else if ( valeur == '' )
{
if ( nom.style.display == 'none' )
nom.style.display = 'block';
else
nom.style.display = 'none';
}
else
nom.style.display = valeur;
}
}
Utilisation :
on peut préciser 'hidden' / 'visible' ou 'none' / 'block'
- hidden/visible cache le paramètre mais garde l'espace occupé par les objets
- none/block cache le paramètre mais cache l'espace occupé par les objets
pour le nom en paramètre, si celui ci est le nom d'un form on peut le passer directement en paramètre sans ' ' (ou " ").
Dans le cas d'une utilisation sur un autre objet, on passe le name en ' ' ou " ".
On passe toujours par l'élément 0 de getElementByName, donc toujours faire attention à ne pas utiliser deux fois le même name.
Si on ne passe pas de paramètre hidden/visible none/block le bouton alterne sur afficher/cacher en mode none/block
edit : sous IE getElementsByName ne marche pas, il récupère les ID. Il est donc plus simple de tout passer par ID, la compatibilité est gardé sous firefox et IE. On peut donc supprimer getElementsByName de la fonction
function afficher(nom, valeur)
{
if ( nom == undefined ) return;
if ( document.getElementById(nom) )
{
if ( valeur == 'hidden' || valeur == 'visible' )
document.getElementById(nom).style.visibility = valeur;
else if ( valeur == '' )
{
if ( document.getElementById(nom).style.display == 'none' )
document.getElementById(nom).style.display = 'block';
else
document.getElementById(nom).style.display = 'none';
}
else
document.getElementById(nom).style.display = valeur;
}
else
{
if ( valeur == 'hidden' || valeur == 'visible' )
nom.style.visibility = valeur;
else if ( valeur == '' )
{
if ( nom.style.display == 'none' )
nom.style.display = 'block';
else
nom.style.display = 'none';
}
else
nom.style.display = valeur;
}
}
version simplifié : tout passe par de l'ID
function afficher2(nom, valeur)
{
if ( !document.getElementById(nom) ) return;
if ( valeur == '' )
{
if ( document.getElementById(nom).style.display == 'none' )
document.getElementById(nom).style.display = 'block';
else
document.getElementById(nom).style.display = 'none';
}
else
document.getElementById(nom).style.display = valeur;
}