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...
Configuration: Windows XP
Internet Explorer 7.0
A voir également:

3 réponses

kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   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