SetInterval (ou setTimeout) plante : quelle est mon erreur ?
Résolu
Quedza
Messages postés
242
Date d'inscription
Statut
Membre
Dernière intervention
-
Quedza Messages postés 242 Date d'inscription Statut Membre Dernière intervention -
Quedza Messages postés 242 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Tout est dans le titre… Le pire, c’est que ça fonctionne… avant de planter.
Je ne vois pas mon erreur. Je m'étonne que cette modeste fonction soit si gourmande…
En clair, je veux faire défiler le titre toutes les demi-secondes.
Je vous remercie par avance pour vos réponses.
Tout est dans le titre… Le pire, c’est que ça fonctionne… avant de planter.
Je ne vois pas mon erreur. Je m'étonne que cette modeste fonction soit si gourmande…
En clair, je veux faire défiler le titre toutes les demi-secondes.
function titre(nb) { document.title = '\u266b '+document.getElementById('nom'+nb).title; defilement(); } var derniereLettre = ''; function defilement() { derniereLettre = document.title.substring(-1); document.title = document.title.substring(+1)+' '+derniereLettre; setInterval(defilement, 500); }
Je vous remercie par avance pour vos réponses.
A voir également:
- SetInterval (ou setTimeout) plante : quelle est mon erreur ?
- Plante - Guide
- Mon telephone plante que faire - Guide
- Cette plante encore peu connue fleurit toute l'année - Et elle est magnifique ! - Guide
- Zut l'onglet a planté - Forum Mozilla Firefox
- Explorateur windows plante - Guide
4 réponses
Sans tester, quelques remarques :
Donc essaye avec un texte long genre "essai de démo de texte défilant" pour voir le résultat.
- setInterval définit un appel à une fonction selon l'interval spécifié, donc à ne faire qu'une fois
- setTimeout, permet d'appeller une fonction avec un délai, donc à faire à chaque appel si tu veux périodique
- Du côté du titre, la variable derniereLettre peut être locale à la fonction (cela évite les soucis)
- Si je ne me trompe pas .substring(-1) prend la dernière lettre de la chaine et document.title.substring(+1) prend la chaine sauf la première lettre
Donc essaye avec un texte long genre "essai de démo de texte défilant" pour voir le résultat.
Salut,
Merci pour te réponse.
Comme je l'ai précisé, ma fonction marche exactement comme je le souhaite… avant de planter. Bizarre. J'ai testé sur plusieurs navigateurs.
Tu m'as fait constater que je n'avais pas besoin de créer la variable "derniereLettre" pour que la fonction marche… mais elle plante toujours.
À défaut d'explication, je cherche une alternative…
Voilà ma page :
http://l.munch.free.fr/musique_classique/
Mais évidemment, après essai infructueux, je commente la fonction afin de ne pas constamment faire planter la page.
Merci pour te réponse.
Comme je l'ai précisé, ma fonction marche exactement comme je le souhaite… avant de planter. Bizarre. J'ai testé sur plusieurs navigateurs.
Tu m'as fait constater que je n'avais pas besoin de créer la variable "derniereLettre" pour que la fonction marche… mais elle plante toujours.
À défaut d'explication, je cherche une alternative…
Voilà ma page :
http://l.munch.free.fr/musique_classique/
Mais évidemment, après essai infructueux, je commente la fonction afin de ne pas constamment faire planter la page.
Quand j'ai testé ton code (posté dans la question, ), le titre est copié en boucle donc forcément une chaîne qui s’allonge en boucle, ça aide pas ...
Le souci vient de Substring, le -1 ne fonctionne pas comme tu le pense (et surtout est inadapté à ton besoin)
Après quelques essais, je suis arrivé sur un problème d'espace (le navigateur supprime les espaces au début et à la fion du titre.
Donc voici le résultat que j'ai obtenu :
Le souci vient de Substring, le -1 ne fonctionne pas comme tu le pense (et surtout est inadapté à ton besoin)
Après quelques essais, je suis arrivé sur un problème d'espace (le navigateur supprime les espaces au début et à la fion du titre.
Donc voici le résultat que j'ai obtenu :
function titre(nb) { document.title = '\u266b Mon titre super long sa mere '; setInterval(defilement, 500); } var isLastSpace=false; function defilement() { var derniereLettre=document.title.substring(0,1); if(isLastSpace) { derniereLettre=' '+derniereLettre; isLastSpace=false; } if(document.title.substring(1,2)==" ") { isLastSpace=true; } document.title = document.title.substring(1)+derniereLettre; }
Pour information et à toutes fins utiles, voilà finalement ce que j’ai imaginé (très fier) :
JavaSript supprimant les espaces des titres hors zone JavaScript, je les ai forcé par l'entité " & n b s p ; ".
setInterval(defilement, 500); function titre(nb) { document.title = '\u266b'+document.getElementById('nom'+nb).title; } function defilement() { document.title = document.title.substring(1)+document.title.substring(0,1); }
JavaSript supprimant les espaces des titres hors zone JavaScript, je les ai forcé par l'entité " & n b s p ; ".