Remplacement d'un texte avec <div>

Bonjour,

Remplacer un texte par un autre au survol d'un bouton se fait avec :

<img src="bouton.gif" onmouseover="document.getElementById('chg').innerHTML = 'Texte de remplacement';"
onmouseout="document.getElementById('chg').innerHTML = 'Texte par défaut';">

<div id="chg">Texte par défaut</div>

Les lignes suivantes me semblaient équivalentes :

<script> function ecrire() {document.write('Texte par défaut')} </script>

<img src="bouton.gif" onmouseover="document.getElementById('chg').innerHTML = 'Texte de remplacement';"
onmouseout="document.getElementById('chg').innerHTML = '<script>ecrire()</script>';">

<div id="chg"><script>ecrire()</script></div>

Or, 'Texte de remplacement' disparait bien mais n'est pas remplacé par 'Texte par défaut' lorsque la souris quitte le bouton. Je ne vois pourtant pas de différence de principe entre ces 2 versions...

'texte par défaut' est le résultat d'une fonction JavaScript de mon application, c'est pourquoi je dois utiliser cette forme.

Quelqu'un voit-il une explication ou une alternative ?

Merci et bonne année...
Configuration: Windows XP
Internet Explorer 7.0

3 réponses

  1. Contributeur
    Ce n'est pas la bonne facon de procéder car d'un coté tu as ta fonction qui écrit, et en marquant :
    document.getElementById('chg').innerHTML = '<script>ecrire()</script>';"> 

    tu demande à ce que le résultat de ton script s'affiche dans ta DIV;
    Or qu'est réellement le résultat de ta fonction ? Rien car elle ne retoure rien !

    Ce qu'il faut que tu marque pour ta fonction c'est :
     function ecrire() { return 'Texte par défaut'; } 
    


    Ainsi ca devrait beaucoup mieux fonctionner.
    1
    1. oui en fait, j'ai pas testé, mais je pense que dans ton div, il s'écrit alors littéralement "<script>ecrire()</script>"...
      Le code n'est pas executé il prend ça comme une simple chaine de caractère !

      Il faut en effet faire quelque chose comme :
      document.getElementById('chg').innerHTML = getMonTexte()


      où getMonTexte est une fonction retournant une chaine :
      function getMonTexte()
      {
         return "La chaine que tu veux afficher";
      }
      1
      1. Merci de ces 2 réponses, je me replonge dans le programme...
        0