11550 sujets

JavaScript, DOM et API Web HTML5

Bonsoir à tous, désolé si mon titre n'est pas très précis, je n'ai pas vu comment mieux le dire. Même s'il n'est pas dans mon habitude de demander de l'aide, d'aider (même si ça m'arrive), je sors un peu du bar pour venir vous poser un petit soucis dont je n'ai pu trouver malgré tout les moteurs de recherche, faute de savoir comment le demander.

Voilà,
j'ai le code xhtml suivant:

<div id="description"> Bonjour</div>
<a href="javascript:affiche('Comment ça va?')"></a>


et le code javascript qui va bien:
function affiche( message ){
	document.getElementById('description').innerHTML = message;
}


Je clique sur le lien, et "Comment ça va?" remplace le "Bonjour" initial.
J'aimerai, tout simplement, qu'avec un lien de style:
<a href="javascript:efface()"></a>


Que la div description, en plus de voir partir le "Comment ça va?", voit le "Bonjour" revenir.

Ceci n'est qu'un exemple, dans le cas pratique, l'équivalent de Bonjour est généré automatiquement, et je ne peux donc pas faire document.getElementById('description').innerHTML = 'Bonjour';.

Merci d'avance Smiley smile

Désolé si la question est bête... je ne suis pas très bon en javascript Smiley cligne
Modifié par Sylvain (08 Nov 2006 - 21:46)
Bonjour.
J'imagine qu'il faudrait mettre le contenu dans une variable avant de l'écraser.

<script>
// variable globale mémorisant le contenu initial.
var backup =document.getElementById('description').innerHTML;

function affiche( message ){
	document.getElementById('description').innerHTML = message;
}

function efface(){
	document.getElementById('description').innerHTML = backup;
}

</script>


L'idée est de mémoriser le contenu initial qui serait rétablit avec efface()...

Si ça vous donne des idées...
Et une idée suprax serait d'éviter d'utiliser l'attribut href d'un lien pour lancer du script... Mieux vaut utiliser par exemple un span ou quelque chose de générique.
FlorentG a écrit :
Et une idée suprax serait d'éviter d'utiliser l'attribut href d'un lien pour lancer du script... Mieux vaut utiliser par exemple un span ou quelque chose de générique.


C'est pour l'exemple. Dans la réalité, j'utilise onmousehover et onmouseout.

Le code ne fonctionne pas. En effet, la fonction retourne "undefined", ce qui signifie je pense qu'il ne reconnait pas la variable.
Cela vient-il du fait que tout ce petit code est dans un fichier javascript externe?
Ou alors faut-il déclarer la variable dans la fonction (je sais qu'il a des variables dans PHP qui ont différentes portées, est-ce la même chose dans javascript ?)

Merci déjà pour vos réponses Smiley cligne
Modifié par Sylvain (08 Nov 2006 - 21:33)
Sylvain a écrit :
Le code ne fonctionne pas. En effet, la fonction retourne "undefined", ce qui signifie je pense qu'il ne reconnait pas la variable.

Si le script est déclaré et exécuté avant que l'élément ne soit définit, c'est normal. Il faut mettre l'appel à document.getElementById dans l'évènement onload de window par exemple. On en a parlé dans un autre topic Smiley smile
et on n'a pas fini Smiley cligne

sinon pour le test, et le test seulement, il suffit de mettre le script après les déclarations html.

tout fonctionne très bien, comme prévu.
Modifié par clb56 (08 Nov 2006 - 21:44)
Rebonsoir.

J'ai rajouté, donc, APRES la balise <div id="description">Coucou</div> la ligne suivante:

	<script type="text/javascript">var backup =document.getElementById('description').innerHTML;</script


Cela fonctionne parfaitement. Je suis ravi d'avoir écris un premier code javascript moi-même (bien que simple), d'avoir compris comment il marchait, et mon erreur. Un petit pas pour l'humanité, un grand pas pour moi Smiley smile

Merci infiniment Smiley smile

(quel est cet autre topic ?)

Bonne soirée Smiley cligne
Modifié par Sylvain (08 Nov 2006 - 21:45)
Sylvain a écrit :

J'ai rajouté, donc, APRES la balise <div id="description">Coucou</div> la ligne suivante:


Je me réjouis de ta félicité Smiley smile

Encore une fois ceci ne vaut que pour le test (et donc pour faire court) afin d'externaliser le tout il faudra bien que tu affrontes cette douloureuse affaire (c'est un euphémisme) du onload.

on en parle notamment ici :
Mal à la tête

Une seule chose, tu es prié de ne pas utiliser toute l'aspirine de l'infirmerie du forum parce que y'en a d'autres qui en ont bien besoin Smiley biggol

Smiley lol
Modifié par clb56 (08 Nov 2006 - 21:55)
j'ai presque le meme probleme sauf que je construit mes liens dans un balise div par un innerHTML a travers un boucle et j'ai les variables utilise dans le lien undefined
voici un bout de code :
a écrit :
document.getElementById('question').innerHTML += '<a href="Javascript:Reponse(reponse[laquestion[i+1]]);">'+laquestion+"<\/a>"

avec :
[b]question
est l'identifiant d'une balise
Reponse est une fonction qui doit recevoir normalement un tableau en parametre
reponse est un tableau de chaine a 2 dimension
laquestion tableau de chaine + indice de tableau reponse
i est le compteur d'un boucle qui parcours le tableau laquestion
[/i]
Modifié par cortex007 (23 Nov 2006 - 17:57)