Explication sur un code

Résolu/Fermé
SKunt Messages postés 150 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 16 octobre 2009 - 27 juil. 2009 à 11:03
SKunt Messages postés 150 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 16 octobre 2009 - 27 juil. 2009 à 17:13
Bonjour,
Voilà j'apprends depuis quelques jours le (X)HTML,Javascript à l'aide d'un livre et je souhaiterais une explication sur le fonctionnement:Voici tout d'abord le code:

<!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">
<head>
<title>Défilement </title>
<script>
var x,i,t,l,d=document
function depart() {
x=setInterval('defil()',200) // Appeller la fonction defil() toutes les 200 ms.
t=d.getElementById('def').innerHTML // Selectionner l'objet ayant l'id "def".
l=t.length // La variable l stocke la longueur de la chaîne de l'objet ayant pour id "def".
tt=t // La variable tt stocke le conenu de la variable t.
t+=t // La variable t stocke une 2ème fois la chaine qu'elle a et la concatène avec la précédente.
i=0 // Initialisation de la variable i.
}
function arret() {
clearInterval(x) // Fonction qui stoppe la fonction depart().
}
function defil() { // Fonction procédure qui permet au texte de défiler.
if((i+=1)>=l) {i=0}
tt=t.substr(i,l) // La variable tt prend la sous chaine extraite de la chaine contenue dans la variable t.
d.getElementById('def').innerHTML=tt
}
</script>
</head>
<body onload="depart()">
<h2>Grands magasins TURJMANN </h2>
<h2 id="def">Ne manquez pas nos SOLDES. </h2>
<a href="javascript:arret()">Arrêter </a>   <a href="javascript:depart()">Animer </a>
</body>
</html>


Bon l'effet je le connais (texte qui défile), mais je n'ai pas compris le fonctionnement de la fonction defil() et copier un code sans le comprendre m'agace.Pourriez-vous m'aider SVP ?
A voir également:

8 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
27 juil. 2009 à 11:13
function defil() { // Fonction procédure qui permet au texte de défiler.
if((i+=1)>=l) {i=0} //tu incrémentes i de 1, si i dépasse l (la longueur de la chaine), alors tu le remet à 0
tt=t.substr(i,l) // ici, tu ne copies ton texte qu'à partir du ieme caractère
d.getElementById('def').innerHTML=tt // et la tu l'affiche
0
SKunt Messages postés 150 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 16 octobre 2009 9
27 juil. 2009 à 12:36
Il y a quelque chose que je ne comprends pas: à quel moment tu incrémentes la variable i ?
Il y a seulement une condition (if.....) mais aucunes opérations sur le i.
0
Bonjour,
je tombe par hasard sur la discussion, donc j'apporte ma contribution :
Il y a bien une incrémentation de i dans le test (if (i+=1) >=l)
Mais c'est varis que pour la clarté du code, il aurait mieux valu écrire :
i +=1; // incrémentation de i
if (i >= l) { i = 0} // quand la fin est atteinte, on revient au début
C'est plus clair non ?
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
27 juil. 2009 à 13:42
ou plutot que faire i+=1, faire i++, ce qui revient au meme
0
SKunt Messages postés 150 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 16 octobre 2009 9
27 juil. 2009 à 13:46
Effectivement je la vois mieux comme ça !!!
tout s'éclaircit maintenant :d'ailleurs je ne comprends pas pourquoi l'auteur du livre n'a pas adopté cette écriture, plus parlante surtout pour un ouvrage destiné aux débutants.
En tout cas je vous remercie à tous les deux pour votre aide ..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
27 juil. 2009 à 13:51
c'est vrai que pour les débutants, il vaut mieux décomposer, mais ceci dit, tu vas devoir t'habituer aux écritures condensées car elles sont très utilisées, et une fois que tu as compris leur utilisation tu les utiliseras beaucoup toi aussi.

donc si tu fais a +=a, ca ffait a =a +1. ca marche avec toutes les opérations matématiques.

tu as aussi a++, a-- ... et ++a et --a. la différence si tu mets le ++ avant ou après, c'est que si tu est dans une condition, avec a++ il incrémente puis il teste, alors qu'avec ++a il test puis il incrémente...
ce qui donne:
a++ =>
a = a+1
if (a ........)
{
...
}


a-- =>
if (a ...)
{
a = a+1
...
}
0
SKunt Messages postés 150 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 16 octobre 2009 9
27 juil. 2009 à 13:54
Juste une question au passage: dans la fonction depart(), on a la variable x=setInterval('defil(),200) puis une série de variables.
Quand le le navigateur arrive à cet endroit, il utilise la fonction defil() (qui va répéter toutes les 200 ms ) mais est-ce que les variables qui suit la variable x sont réutilisées ou pas?
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
27 juil. 2009 à 15:06
je pense qu'on ne passe qu'une fois dasn le code qui suit, et les variables ne sont plus utilisées
0
SKunt Messages postés 150 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 16 octobre 2009 9
27 juil. 2009 à 17:13
Merci beaucoup à vous deux , vous m'avez bien aidé !!!!!!
0