Problème en HTML
Résolu gagner79 Messages postés 261 Date d'inscription Statut Membre Dernière intervention -
Groarh Messages postés 682 Date d'inscription Statut Membre Dernière intervention - 27 oct. 2008 à 23:10
Groarh Messages postés 682 Date d'inscription Statut Membre Dernière intervention - 27 oct. 2008 à 23:10
A voir également:
- Problème en HTML
- Editeur html - Télécharger - HTML
- Forum ing
- Forum HTML
- Html - Télécharger - HTML
- Forum ing
7 réponses
this.stop() et this.start ne sont pas definis dans ton code !!!
voici un exemple simple
et si sa marche pas fais ceci :
voici un exemple simple
<script type="text/javascript"> /* On définit les fonctions de d'arret et de comencement */ function stop() { // On remet à zéro toutes les valeurs possibles de defilement document.getElementById('texte').scrollamount= 0 ; document.getElementById('texte').scrolldelay = 0 ; } function start() { // On remet en marche le defilement. Ici je choisis 6 partout mais tu mets ce que tu veux hein lol document.getElementById('texte').scrollamount= 6 ; document.getElementById('texte').scrolldelay = 6 ; } function si() { if (start()) { stop() ; } else { start() ; } } </script> <marquee id = "texte" behavior="scroll" scrollamount=6 scrolldelay=6 onclick="si();"> Salut </marquee>
et si sa marche pas fais ceci :
<script type="text/javascript"> /* On définit les fonctions de d'arret et de comencement */ function stop() { // On remet à zéro toutes les valeurs possibles de defilement document.getElementById('texte').scrollamount= 0 ; document.getElementById('texte').scrolldelay = 0 ; } function start() { // On remet en marche le defilement. Ici je choisis 6 partout mais tu mets ce que tu veux hein lol document.getElementById('texte').scrollamount= 6 ; document.getElementById('texte').scrolldelay = 6 ; } </script> <marquee id = "texte" behavior="scroll" scrollamount=6 scrolldelay=6 onmouseover="stop()" onmouseout="start()"> Salut </marquee>
Salut !
Je connais bien ton problème, pour m'être cassé les dents dessus pas mal de fois :D
Le truc c'est que tu ne peux pas assigner plusieurs fonctions au même évènement, par exemple ici : this.stop() et this.start() à onClick. Il faut modifier un peu le Javascript, en créant une nouvelle fonction qui servira à basculer l'état (défilant ou arrêté) du marquee. J'appellerai cette fonction toggle() car toggle signifie basculer en anglais.
NB : je ne mets pas this.toggle() car il faudrait alors rajouter une méthode toggle aux objets de type marquee. C'est faisable mais un peu compliqué (Si tu veux, tu me demandes ;) ).
Nous allons simplement rajouter une fonction toggle au script général :
Explication : lors du chargement de la page, le marquee est créé et se met en mode défilant (enfin, je crois ^^)
Lorsqu'on clique dessus pour la 1re fois, la fonction toggle est appellée avec this é en paramètre. Elle cherche alors une propriété this.etat qui n'existe pas encore, et qui n'est donc pas égal à 'arrete'.
On e donc dans le bloc else.
Là, on donne la valeur 'arrete' à this.etat et on arrête le marquee avec this.stop().
Lors du second clic, le test if va voir que this.etat contient la valeur 'arrete', on e dans le bloc if qui donne alors la valeur 'defilant' à this.etat et qui fait this.start().
Lors du 3e clic, on refait this.stop() et on remet la valeur 'arrete', la boucle est bouclée.
Voilà ça marche, j'ai testé sous FF3. Si tu as des questions, je suis là ;)
Je connais bien ton problème, pour m'être cassé les dents dessus pas mal de fois :D
Le truc c'est que tu ne peux pas assigner plusieurs fonctions au même évènement, par exemple ici : this.stop() et this.start() à onClick. Il faut modifier un peu le Javascript, en créant une nouvelle fonction qui servira à basculer l'état (défilant ou arrêté) du marquee. J'appellerai cette fonction toggle() car toggle signifie basculer en anglais.
<marquee behavior="scroll" direction="{WDIR}" scrollamount="{WAMOUNT}" scrolldelay="{WSPEED}" height="{WHEIGHT}" style="height:{WHEIGHT}px" onclick="toggle(this)">
NB : je ne mets pas this.toggle() car il faudrait alors rajouter une méthode toggle aux objets de type marquee. C'est faisable mais un peu compliqué (Si tu veux, tu me demandes ;) ).
Nous allons simplement rajouter une fonction toggle au script général :
function toggle(objet) { if (objet.etat == 'arrete') { objet.etat = 'defilant'; objet.start(); } else { objet.etat = 'arrete'; objet.stop(); } }
Explication : lors du chargement de la page, le marquee est créé et se met en mode défilant (enfin, je crois ^^)
Lorsqu'on clique dessus pour la 1re fois, la fonction toggle est appellée avec this é en paramètre. Elle cherche alors une propriété this.etat qui n'existe pas encore, et qui n'est donc pas égal à 'arrete'.
On e donc dans le bloc else.
Là, on donne la valeur 'arrete' à this.etat et on arrête le marquee avec this.stop().
Lors du second clic, le test if va voir que this.etat contient la valeur 'arrete', on e dans le bloc if qui donne alors la valeur 'defilant' à this.etat et qui fait this.start().
Lors du 3e clic, on refait this.stop() et on remet la valeur 'arrete', la boucle est bouclée.
Voilà ça marche, j'ai testé sous FF3. Si tu as des questions, je suis là ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question Bon j'avais envie de le faire quand même :P alors voilà : comment rajouter la méthode toggle à toutes les balises marquee.
La difficulté, c'est que cette balise est dépréciée par le W3C, étant donnée qu'elle est propriété de Microsoft. Même si les navigateurs "indulgents" comme FF la traitent correctement, elle ne doit pas exister et n'a donc pas de modèle objet (équivalent DOM) pour le javascript... résultat : pas de prototype, ces références aux objets si pratiques en javascript T_T
Qu'à cela ne tienne, on va le faire à la main !
La difficulté, c'est que cette balise est dépréciée par le W3C, étant donnée qu'elle est propriété de Microsoft. Même si les navigateurs "indulgents" comme FF la traitent correctement, elle ne doit pas exister et n'a donc pas de modèle objet (équivalent DOM) pour le javascript... résultat : pas de prototype, ces références aux objets si pratiques en javascript T_T
Qu'à cela ne tienne, on va le faire à la main !
var collec = document.getElementsByTagName('marquee'); for (var i = 0; i <= collec.length - 1; i++) { collec.isScrolling = true; collec.item(i).toggle = function() { if (this.isScrolling) { this.stop(); } else { this.start(); } this.isScrolling = !this.isScrolling; } }Ce code doit être exécuté au chargement de la page, après que le contenu ait été créé. Utilisez votre méthode habituelle ou pas...