Partage
  • Partager sur Facebook
  • Partager sur Twitter

JS innertext

Sujet résolu
    21 août 2011 à 14:40:15

    Bonjour,

    j'arrête pas de me prendre la tête pour un problème a deux sous, mais je suis très nul en js alors bon ...

    Voici ma fonction :

    <script>
    function affCache(idpr)
    {
    	var pr = document.getElementById(idpr);
    	var pr2 = document.getElementById('defilMM');
    	
    	if (pr.style.display == "block") {
    		pr.style.display = "none";
    		pr2.InnerText="Afficher le menu";
    	} else {
    		pr.style.display = "block";
    		pr2.InnerText="Masquer le menu";
    	}
    }
    </script>
    


    Alors, le déroulement du menu s'effectue bien. Seulement le text ne change pas !

    voici les balises contenu dans le menu donc :

    <tr>
    			<td>
    				<span id="defilMM" onClick="affCache('membreMenuDroite');">
    					Masquer le menu<br />
    				</span>
    			</td>
    		</tr>
    	</table>	
    </div>
    <span id="membreMenuDroite">
    	<ul>
    		<li><a href="liste-des-membres.html">Profil</a></li>
    		<li><a href="messages.html">Messages</a></li>
    		<li><a href="cocostream_1.0.jar">Télécharger le logiciel</a></li>
    		<li><a href="liste-des-membres.html">Liste des membres</a></li>
    	</ul>
    </span>
    
    • Partager sur Facebook
    • Partager sur Twitter
      21 août 2011 à 16:52:26

      Alors premièrement c'est innerText et non pas InnerText (les majuscules sont importantes)
      et ensuite innerText n'est pas standard (et donc n'est pas compatible sur tous les navigateurs, par exemple Firefox ne le supporte pas). Celui qui est standard est textContent. Par contre IE<9 ne le supportent pas.

      Du coup soit tu ne cherches pas à être compatible IE8 et inférieur et tu utilises textContent.
      Soit tu fais une vérification et tu utilises celui que le navigateur connait
      if(document.body.textContent){
        pr2.textContent="Afficher le menu";
      }else{
        pr2.innerText="Afficher le menu";
      }
      


      Soit tu utilises, une autre méthode, mais qui sont généralement plus lourde. Comme innerHTML (qui permet normalement de mettre du HTML)
      pr2.innerHTML="Afficher le menu";
      


      ou modififier le contenu du DOM (mais c'est un peu plus hasardeux car, il me semble, que cela dépend de ton doctype), comme:
      pr2.childNodes[0].data="Afficher le menu";
      //ou
      pr2.childNodes[0].nodeValue="Afficher le menu"; //je ne suis pas sûr que cette propriété soit accessible en écriture
      
      • Partager sur Facebook
      • Partager sur Twitter

      JS innertext

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown