Remplacement d'un texte avec <div>

Puzzle_ Messages postés 9 Statut Membre -  
Puzzle_ Messages postés 9 Statut Membre -
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...
A voir également:

3 réponses

kij_82 Messages postés 4260 Statut Contributeur 857
 
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
bumblebee
 
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
Puzzle_ Messages postés 9 Statut Membre
 
Merci de ces 2 réponses, je me replonge dans le programme...
0