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 -
Groarh Messages postés 682 Date d'inscription Statut Membre Dernière intervention -
Salut !
J'ai créé un forum, et en haut de la page il y a un message de bienvenue qui bouge de droite à gauche et le défilement s'arrete quand je clique dessus, voici la ligne de code :
<marquee behavior="scroll" direction="{WDIR}" scrollamount="{WAMOUNT}" scrolldelay="{WSPEED}" height="{WHEIGHT}" style="height:{WHEIGHT}px" onclick="this.stop()" onclick="this.start()">
où "this.stop()" sert à arrêter le défilement et "this.start()" sert à le démarrer.
Comment doij-je faire pour que le défilement s'arrête quand je clique dessus et démarre quand je clique dessus ?
Merci d'avance !
J'ai créé un forum, et en haut de la page il y a un message de bienvenue qui bouge de droite à gauche et le défilement s'arrete quand je clique dessus, voici la ligne de code :
<marquee behavior="scroll" direction="{WDIR}" scrollamount="{WAMOUNT}" scrolldelay="{WSPEED}" height="{WHEIGHT}" style="height:{WHEIGHT}px" onclick="this.stop()" onclick="this.start()">
où "this.stop()" sert à arrêter le défilement et "this.start()" sert à le démarrer.
Comment doij-je faire pour que le défilement s'arrête quand je clique dessus et démarre quand je clique dessus ?
Merci d'avance !
A voir également:
- Problème en HTML
- Editeur html - Télécharger - HTML
- Espace en html ✓ - Forum HTML
- [**] Balise pour un espace vide en hml. Merci ✓ - Forum Webmastering
- Html download - Télécharger - HTML
- /Var/www/html/index.html ✓ - Forum Linux / Unix
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 passé 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 passe 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 passe 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 passé 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 passe 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 passe 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...