Ma fonction ne s'exécute qu'une fois

Résolu
essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -
bonjour à tous!
j'ai écrit une fonction javascript qui est sensée changer l'aspect de mon bouton à chaque clic mais elle ne s'exécute qu'une fois!
merci de m'aider!

<button type="button" class="btn btn-default" id="menu-toggle" onclick="toggle_div(this);">
<<
</button>

Voici le bouton en question et maintenant la fonction:

function toggle_div(button)
{
if(button.innerHTML = "<<")
button.innerHTML = ">>";

else

button.innerHTML = "<<";

}

3 réponses

  1. essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci pour la suggestion! J'utilise aussi bootstrap pour le style, d'où la balise <button></button>
    0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Y'a plusieurs soucis dans ton code.....
    1 - Une comparaison d'égalité se fait avec == ou === .... pas un seul "="

    2 - innerHTML .. retourne le contenu HTML .. donc.. pour les caractères spéciaux comme les "<" .. ça retourne & lt; (sans espace)

    3 - Voici le code corrigé :
    <html> 
     <meta charset=UTF-8>
     <head> 
     <title>test</title>
     </head>
      <body>
    
      <button type="button" class="btn btn-default" id="menu-toggle" onclick="toggle_div(this);"><<</button>
      
      
      </body>
     </html>
     
     <script type="text/javascript">
      function toggle_div(button) {
       var txt = button.innerHTML;
       if(txt == "<<"){
             button.innerHTML = ">>";
       }else{
            button.innerHTML = "<<";
       }
     }
     
     </script>
    


    NB : Il faut remplacer << par & lt; & lt; (sans espaces)

    Cordialement,
    Jordane
    0
    1. essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci Jordane! Je l'essaie tout de suite!!!
      0
    2. essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Non concluant! Le changement d'aspect du bouton ne s'effectue qu'au premier clic
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
         
        as tu bien remplacé, dans le IF , les caractères << par & lt;& lt; (sans espaces) ??
        As tu bien utilisé le double égal pour faire la comparaison ?
        As tu testé mon code tel quel ? car il fonctionne parfaitement !
        0
    3. essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Je ne l'ai pas testé tel quel! J'ai juste apporté toutes les modifications suggérées au mien
      0
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Une autre possibilité est d'utiliser textContent au lieu de innHTML
      function toggle_div(button) {
       var txt = button.textContent;
       //console.log(txt);
          if(txt == "<<"){
              button.innerHTML = ">>";
          }else{
            button.innerHTML = "<<";
         }
        }
    

    là.. pas besoin de transformer tes chaines de caractères....

    Cordialement,
    Jordane
    0
    1. essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Nickel chrome!!!! Mercu bcp Jordane!!!!!!
      0
    2. essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci à tous!
      0
    3. essytelle Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
       
      • merci
      0