Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Soucis et solutions de programmations
Soucis et solutions de programmations
Publicité
Archives
11 mai 2008

(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;
}

Publicité
Publicité
Commentaires
Publicité