Problème setTimeOut en javascript

Fermé
katsuo49 Messages postés 330 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 11 novembre 2014 - 10 mai 2011 à 00:00
katsuo49 Messages postés 330 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 11 novembre 2014 - 10 mai 2011 à 19:08
Bonjour,
je cherche à réaliser un script qui écrit un texte quelconque lettre par lettre, l'efface, écrit le texte lettre par lettre...
J'ai trouvé comment faire pour que le texte s'efface et se réécrive. Je vois comment je dois faire en gros pour que les lettres apparaissent les une après les autres mais mon code n'affiche rien avec les setTimeOut.

index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
   <head>
    <title>ABCDE</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  </head>

 <!-- <body onload="ecrit(5);">
 -->
<body onload="setInterval('ecrit(5)',500);">

<div style="min-wisth:500px;min-height:500px;background:#555">

    <script type="text/javascript" src="script.js"></script>
   

<span id="lettre1" style="visibility:hidden">A</span><span id="lettre2" style="visibility:hidden">B</span>
<span id="lettre3" style="visibility:hidden">C</span>
<span id="lettre4" style="visibility:hidden">D</span>
<span id="lettre5" style="visibility:hidden">E</span>


</div>    


  </body>
</html>


script.js
function ecrit(nblettre)
{

	for(var i=1;i<=nblettre;i++){
			var elementLettre;
			elementLettre = document.getElementById('lettre' + i) ;

					if (elementLettre.style.visibility == 'hidden')
					{
							//setTimeout("elementLettre.style.visibility = 'visible'",100);
							elementLettre.style.visibility = 'visible';
					} else {
							//setTimeout("elementLettre.style.visibility = 'hidden'",100);
							elementLettre.style.visibility = 'hidden';
					}
	}

}


Tel quel le code fait clignoter le texte. Mais si j'enlève les '//' et les mets au ligne sans setTimeOut, plus rien ne s'affiche du tout.

Comment dois-je faire ?
Merci d'avance de prendre du temps pour me répondre.

2 réponses

theworldisbeautiful
10 mai 2011 à 11:27
essayes ca:

setTimeout("lettreHidden( "+elementLettre+" )", 400);


function lettreHidden( lettre ) {
lettre.style.visibility = "hidden";
return false;
}

bye
0
katsuo49 Messages postés 330 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 11 novembre 2014 25
10 mai 2011 à 19:08
J'ai modifié vis à vis de ce que tu m'as dit mais ça ne m'affiche plus rien.

voilà ce que j'ai fais :
script.js
function ecrit(nblettre)
{

	for(var i=1;i<=nblettre;i++){
			var elementLettre;
			elementLettre = document.getElementById('lettre' + i) ;
					if (elementLettre.style.visibility == 'hidden')
					{
							//setTimeout("elementLettre.style.visibility = 'visible'",100);
							//elementLettre.style.visibility = 'visible';
							setTimeout("lettreVisible( '+elementLettre+' )", 400);
					} else {
							//setTimeout("elementLettre.style.visibility = 'hidden'",100);
							//elementLettre.style.visibility = 'hidden';
							setTimeout("lettreHidden( '+elementLettre+' )", 400);

					}
	}

}


function lettreHidden( lettre ) {
lettre.style.visibility = "hidden";
return false;
}
function lettreVisible( lettre ) {
lettre.style.visibility = "visible";
return false;
}

J'ai essayé aussi sans la boucle for en mettant seulement la modification hidden->visible mais sans résultat non plus.
0