Javascript : problème avec window.setTimeout
Résolu
Code42
Messages postés
3
Statut
Membre
-
Code42 Messages postés 3 Statut Membre -
Code42 Messages postés 3 Statut Membre -
Ami(e)s développeurs(se) je vous salue !
Débutant en programmation je solicite votre aide pour un problème que je n'arrive pas à solutionner en Javascript, et ce, malgré quelques recherche sur la toile (Google n'est pas mon ami aujourd'hui ^^).
Voilà le topo :
Sur une page XHTML, je souhaite changer automatiquement une image via Javascript. L'image en question est contenue dans une div. A savoir, toutes les images que je souhaite afficher/cacher sont toute présente dans le source (généré en php) dans des div différentes et cachés grâce à la propriété CSS 'display:none;'. Rien d'extraordinaire me diriez vous. Cependant, je n'arrive pas à comprendre pourquoi mon script ne fonctionne pas.
Voici le code en question :
La paramètre elem est une chaine de caractère. C'est la valeur que partage les id de mes div. Petite précision avant que certains me jettent des tomates, le paramètre offre permet de savoir quel div traiter. En effait offre est un int qui permet me d'avoir des id unique ^^. Quand à cpt, c'est un int qui a pour valeur le nombre total de div à traiter sur ma page.
Le problème :
Et bien window.setTimeout() ne "claque" pas. J'ai placé des traces afin de voir si le code est entièrement parcouru, verifié avec firebug la valeur de mes variables, tout va bien, juste la méthode setTimeout qui veux pas s'exécuter.
Des suggestions ?
Merci d'avance pour votre aide.
Code42.
Débutant en programmation je solicite votre aide pour un problème que je n'arrive pas à solutionner en Javascript, et ce, malgré quelques recherche sur la toile (Google n'est pas mon ami aujourd'hui ^^).
Voilà le topo :
Sur une page XHTML, je souhaite changer automatiquement une image via Javascript. L'image en question est contenue dans une div. A savoir, toutes les images que je souhaite afficher/cacher sont toute présente dans le source (généré en php) dans des div différentes et cachés grâce à la propriété CSS 'display:none;'. Rien d'extraordinaire me diriez vous. Cependant, je n'arrive pas à comprendre pourquoi mon script ne fonctionne pas.
Voici le code en question :
function autoHideAndShow(elem, offre, cpt){ for(var i = 0; i < cpt; ++i){ document.getElementById(elem + i).style.display = 'none'; } document.getElementById(elem + offre).style.display = ''; ++offre; if(offre == cpt){ offre = 0; } window.setTimeout('autoHideAndShow(elem, offre, cpt)', 5000); }
La paramètre elem est une chaine de caractère. C'est la valeur que partage les id de mes div. Petite précision avant que certains me jettent des tomates, le paramètre offre permet de savoir quel div traiter. En effait offre est un int qui permet me d'avoir des id unique ^^. Quand à cpt, c'est un int qui a pour valeur le nombre total de div à traiter sur ma page.
Le problème :
Et bien window.setTimeout() ne "claque" pas. J'ai placé des traces afin de voir si le code est entièrement parcouru, verifié avec firebug la valeur de mes variables, tout va bien, juste la méthode setTimeout qui veux pas s'exécuter.
Des suggestions ?
Merci d'avance pour votre aide.
Code42.
A voir également:
- Set time out js
- Telecharger javascript - Télécharger - Langages
- A javascript error occurred in the main process - Forum Handicap / Accessibilté
- Afficher un tableau javascript en html ✓ - Forum Javascript
- Javascript arrondi - Forum Javascript
- Javascript arrondi après la virgule ✓ - Forum Windows
3 réponses
Bon bah honte sur moi, j'ai malgré tout continué mes recherches, et j'ai finalement trouvé une solution.
Pour ceux à qui ça peu intéresser, les fonctions passées en argument de la méthode setTimeout () ne peuvent avoir de paramètres. J'ai donc fini par utiliser des variables global...
Bonne journée et à bientôt surement !!!
Pour ceux à qui ça peu intéresser, les fonctions passées en argument de la méthode setTimeout () ne peuvent avoir de paramètres. J'ai donc fini par utiliser des variables global...
Bonne journée et à bientôt surement !!!
Bsr
Bien sûr qu'on peut passer des paramètres via SetTimeout ;-)
Pas directement certe mais en utilisant une fonction anonyme et une closure
Ex
Ca marche aussi avec des objets via call() ou apply() et ça c'est top !
Bon faut qd même faire gaffe aux memory leaks avec ce genre de syntaxe surtout sous IE ;-)
Bien sûr qu'on peut passer des paramètres via SetTimeout ;-)
Pas directement certe mais en utilisant une fonction anonyme et une closure
Ex
<!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" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>SetTimeout</title> <link rel="stylesheet" type="text/css" href="frame.css" /> <script> function autoHideAndShow(cpt){ var elt = "cpt = "+document.getElementById("resultat"); var compteur = cpt; resultat.innerHTML = compteur; compteur += 100; window.setTimeout(function(){autoHideAndShow(compteur);}, 5000); } function load() { autoHideAndShow(0); } </script> </head> <body onload="load()"><div id="resultat"></div> </body> </html>
Ca marche aussi avec des objets via call() ou apply() et ça c'est top !
Bon faut qd même faire gaffe aux memory leaks avec ce genre de syntaxe surtout sous IE ;-)