Réduction d'un code Javascript trop long...

Id=ntity Messages postés 87 Statut Membre -  
Id=ntity Messages postés 87 Statut Membre -
Bonjour,

Étant novice en JavaScript j'ai codé 6 fonctions. 3 d'entre elles exécutent le même code mais pour des blocs d'identifiants différents.

J'aimerai compacter ce code en deux fonctions cacher / révéler. Afin de ne pas avoir ce code-ci:

function cacher()
{
document.getElementById('promo_infos_here').style.display = 'none';
}
function reveler()
{
document.getElementById('promo_infos_here').style.display = 'block';
}
function cacherdeux()
{
document.getElementById('promo_infos_here_deux').style.display = 'none';
}
function revelerdeux()
{
document.getElementById('promo_infos_here_deux').style.display = 'block';
}
function cachertrois()
{
document.getElementById('promo_infos_here_trois').style.display = 'none';
}
function revelertrois()
{
document.getElementById('promo_infos_here_trois').style.display = 'block';
}

Pouvez-vous m'aider ou m'aiguiller vers une solution ?

Merci d'avance ;)

18 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    function cacher(nb = '') {
    	document.getElementById('promo_infos_here' + nb).style.display = 'none'; 
    } 
    function reveler(nb = '') {
    	document.getElementById('promo_infos_here' + nb).style.display = 'block'; 
    }
    Et quand tu appelles une fonction, il suffit de préciser ce qu'il y a après "promo_infos_here" :
    cacher('_deux');
    1
  2. LelLex Messages postés 1753 Statut Membre 112
     
    Tu as essayé(e) d'utiliser une librairie JavaScript : MoonTools - jQuery.
    0
  3. Id=ntity Messages postés 87 Statut Membre 1
     
    Non non. Je souhaite seulement simplifier le code...
    0
  4. LelLex Messages postés 1753 Statut Membre 112
     
    Tu appelles tes blocs par le même nom.
    Et dans ton code JS tu mets le nom de tes div.

    ?!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Id=ntity Messages postés 87 Statut Membre 1
     
    Non car je veux qu'un seul bloc aparaisse/disparaisse à la fois. Je dois donner un nom différent à chaque bloc mais je peux leur donner une même classe si besoin est.
    Je ne sais pas comment procéder avec JS
    0
  7. Id=ntity Messages postés 87 Statut Membre 1
     
    Merci acion-f16, c'est exactement ce dont j'avais besoin.

    Un grand merci ;)
    0
  8. Id=ntity Messages postés 87 Statut Membre 1
     
    En fait...je n'ai pas bien saisi:

    Dans mon html j'ai par exemple:

    <span class="promo_infos_deux" onmouseover="cacher('_deux')" onmouseout="reveler('_deux')">
    <span id="promo_infos_here_deux">
    titre du contenu a cacher
    </span>
    <span class="promo_infos_detail_deux">
    contenu à révéler..
    </span>
    </span>

    C'est ainsi que je dois appeler les fonctions dans le HTML ? Et dans le JS que tu m'as donné, dois-je modifier quelque chose ?

    Merci d'avance
    0
  9. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    <span class="promo_infos_deux" onmouseover="cacher('_deux')" onmouseout="reveler('_deux')">texte</span>
    <span id="promo_infos_detail_deux">
        contenu à révéler.. 
    </span>
    Attentionx aux différences entre "id" et "class"
    0
  10. Id=ntity Messages postés 87 Statut Membre 1
     
    Et je laisse le JS tel quel ?

    Oui je sais bien pour les class et les ID t'inquiète pas ;)
    0
  11. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Oui, le JS est bon.
    0
  12. Id=ntity Messages postés 87 Statut Membre 1
     
    J'ai essayé avec ceci pour le JS :

    function cacher(nb = '') {
    document.getElementById('promo_infos_here' + nb).style.display = 'none';
    }
    function reveler(nb = '') {
    document.getElementById('promo_infos_here' + nb).style.display = 'block';
    }

    Et ceci pour le HTML:

    <span class="promo_infos_deux" onmouseover="cacher('_deux')" onmouseout="reveler('_deux')">texte</span>
    <span id="promo_infos_detail_deux">
    contenu à révéler..
    </span>

    Le contenu qui est ici "texte" dans le HTML ne disparaît pas au survol.
    0
  13. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    C'est "promo_infos_here_deux" et pas "promo_infos_detail_deux".
    Donc modifies le JS ou le (x)HTML.
    Et le contenu à masquer/afficher ce n'est pas plutôt "contenu à révéler.." ? Je ne comprends pas ce que t'essaye de faire.
    0
  14. Id=ntity Messages postés 87 Statut Membre 1
     
    Ceci est affiché par un hover :
    <span id="promo_infos_detail_deux">
    contenu à révéler..
    </span>

    Pas besoin de JS...mais...
    le contenu à cacher/montrer par JS est celui dans:
    <span class="promo_infos_deux" onmouseover="cacher('_deux')" onmouseout="reveler('_deux')">texte</span>
    0
  15. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    En fait tu veux simplement un système de afficher/masquer avec des lignes et quand on clique sur une, un texte s'affiche en-dessous ?
    0
  16. Id=ntity Messages postés 87 Statut Membre 1
     
    Oui, une ligne s'affiche à la base. Au survol, elle disparaît pour laisser apparaître un second texte. Elle réapparait quand la zone n'est plus survolée.

    Le texte de base doit etre caché/afficher en JS, le second texte apparaît simplement avec un système de hover :)
    0
  17. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Comme ça ? http://paste.pocoo.org/show/180477/
    0
    1. Id=ntity Messages postés 87 Statut Membre 1
       
      Non pas exactement.

      Voici l'état de base d'affichage sur le site :
      - texte d'accroche visible
      - texte descriptif invisible

      La personne survole le texte d'accroche et:
      - texte d'accroche disparaît grâce au Js
      - texte descriptif apparaît grâce au :hover dans le css

      La personne retire la souris:
      - texte d'accroche ré-apparaît grâce au Js
      - texte descriptif à nouveau invisible grâce au :hover dans le css

      Voilà ;)
      0
  18. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Et bien ? Ce n'est pas ce que fait mon script ?
    Par contre ce n'est pas faisable en CSS avec :hover
    0
  19. Id=ntity Messages postés 87 Statut Membre 1
     
    Je te montre la page par message privé, tu comprendras mieux ^^
    0