scroller un div grace au JS

scroller un div grace au JS - HTML/CSS - Programmation

Marsh Posté le 10-08-2006 à 17:39:25    

voilà, je suis sur la refonte d'un site et j'ai enlevé tous les position:absolute des div et là, surprise, le scroll JS ne fonctionne plus, j'ai tout essayé mais je m'y suis cassé les dents [:antyu] faut dire que je ne connais que très peu le JS. Bref, je me suis dit : je vais refaire une fction tte propre et toute nouvelle, j'ai donc trouvé ceci :http://www.adp-gmbh.ch/web/js/scroll.html et je l'ai adapté :
 
le JS

Code :
  1. function move_up() {
  2.     mon_div.scrollTop -=2;
  3.     var timer=setTimeout('move_up();',20);
  4.   }
  5. function move_down() {
  6.     mon_div.scrollTop +=2;
  7.     var timer=setTimeout('move_down();',20);
  8.   }


 
l'html

Code :
  1. <div id="mon_div">
  2. <div id="text"> bla bla bla</div>
  3. </div>


 
et enfin le CSS :

Code :
  1. #mon_div{
  2. width:230px;
  3. height:240px;
  4. overflow:hidden;
  5. }
  6. #text{
  7. font-family: Verdana, Arial, Helvetica, sans-serif;
  8. font-size: 9px;
  9. font-style: normal;
  10. font-weight: normal;
  11. color: #000000;
  12. text-align: justify;
  13. }


 
ça marche plutot pas mal mais le probleme (ha enfin un probleme !) c'est que je n'arrive pas a l'arreter.
 
voilà le dernier bout de code :

Code :
  1. <a href="javascript:;" onMouseOut="clearTimeout(timer);" onMouseOver="move_up()"><img src="imgs/scroll_up.gif" name="up1"></a>

et le même pour le scroll down.
 
si quelqu'un pouvait m'aider a arreter le scroll ça serait génial, et pourquoi cette méthode ne fonctionne pas ?
 
merci !! :jap:  
 
 

Reply

Marsh Posté le 10-08-2006 à 17:39:25   

Reply

Marsh Posté le 11-08-2006 à 15:16:27    

la notion de block, ça te parle ?
essaye ça :

Code :
  1. var timer;
  2. function move_up() {
  3.    mon_div.scrollTop -=2;
  4.    timer=setTimeout('move_up();',20);
  5. }
  6.  
  7. function move_down() {
  8.    mon_div.scrollTop +=2;
  9.    timer=setTimeout('move_down();',20);
  10. }


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 11-08-2006 à 16:37:32    

marche po...  
oui ça me parle les block, mais je vois pas en quoi ça pourrait d'aider, vais me renseigner vite fait

Reply

Marsh Posté le 11-08-2006 à 16:37:32    

marche po...  
oui ça me parle les block, mais je vois pas en quoi ça pourrait d'aider, vais me renseigner vite fait
 
edit: tiens, un ptit bug du forum hardware :) j'ai cliqué trop vite et pouf ! 2 messages


Message édité par bis2kt le 11-08-2006 à 16:38:26
Reply

Marsh Posté le 11-08-2006 à 18:17:14    

les blocks, la porté des variables, tout ça... ici, tu redéfinis ta variable dans chaque fonction, et elle n'est pas visible de l'extérieur, donc ton clearTimeout(timer) c'est équivalent à clearTimeout(null). Il faut que ton timer soit visible sur ta page.
 
Et ça marche :o au moins avec Firefox en tout cas.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 16-08-2006 à 12:39:19    

effectivement, ça fonctionne très bien... sauf dans ma page.

Reply

Marsh Posté le 16-08-2006 à 13:16:25    

bha fait péter ta page complète...


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 16-08-2006 à 14:34:39    

je me suis mal exprimé, c'est à dire que ça fonctionne mais mal.  
Le scroll s'arrete (merci Brissou :jap: ) mais il est très lent et la console m'affiche :
 

Code :
  1. Avertissement : Élément référencé par son ID/NAME dans le contexte global. Utilisez la propriété standard du W3C document.getElementById() à la place.
  2. Fichier source : http://www.(...).com/artiste3.php?id=7
  3. Ligne : 22


 
alors que le scroll focntionne tres bien et sans message d'erreur si je fais une page test comme ça :

Code :
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4. var timer;
  5. function move_up() {
  6.     mon_div.scrollTop -=2;
  7.     timer=setTimeout('move_up();',20);
  8. }
  9. function move_down() {
  10.     mon_div.scrollTop +=2;
  11.     timer=setTimeout('move_down();',20);
  12. }
  13. </script>
  14. <style type="text/css">
  15. <!--
  16. #mon_div{
  17.     width:230px;
  18.     height:240px;
  19.     overflow:hidden;
  20. }
  21. #text{
  22.     font-family: Verdana, Arial, Helvetica, sans-serif;
  23.     font-size: 9px;
  24.     font-style: normal;
  25.     font-weight: normal;
  26.     color: #000000;
  27.     text-align: justify;
  28. }
  29. -->
  30. </style>
  31. </head>
  32. <body>
  33. <div id="mon_div">
  34. <div id="text">
  35. mon texte ... bla bla ... bla bla ... bla bla ... bla bla ... bla bla ...
  36. </div>
  37. </div>
  38. <a href="javascript:;" onMouseOut="clearTimeout(timer);" onMouseOver="move_up()">UP</a>
  39. <a href="javascript:;" onMouseOut="clearTimeout(timer);" onMouseOver="move_down()">DOWN</a>
  40. </body>
  41. </html>


 
bref... [:m1sery]

Reply

Marsh Posté le 16-08-2006 à 15:02:19    

... très drôle. Je me suis dit : "tiens et si je testais sous un autre navigateur ?"
donc j'ai essayé sous mon browser préféré (Opera) et ça fonctionne très bien, puis sous le pire brower que je connaisse (IE), pareil.  
Donc je me suis dit : pourquoi ça marche pas sous Firefox ???
 
... (période de réfléxion intense)
 
... [:icon3] et si je fermais la console Javascript ?? ...
 
c'est toujours pareil  :pfff: on perd 2 jours sur un truc à la #@?!%!! ...


Message édité par bis2kt le 16-08-2006 à 15:08:54
Reply

Marsh Posté le 16-08-2006 à 15:03:33    

bha il te dit de faire

Code :
  1. document.getElementById(mon_div).scrollTop -= 2;


au lieu de

Code :
  1. mon_div.scrollTop -= 2;


 
à vu de nez


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 16-08-2006 à 15:03:33   

Reply

Marsh Posté le 16-08-2006 à 15:04:06    

étrange le coup de la console...


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 16-08-2006 à 15:10:37    

bah à mon avis c'est juste que firefox (ou le pc sur lequel je taf) sont pas assez intelligent pour faire un affichage dans la console et en même temps executer le code, donc ça lag un peu...

Reply

Marsh Posté le 16-08-2006 à 15:24:20    

hum... ok ok.
 
Donc ça marche :D


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed