Problème JS

Résolu/Fermé
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 - 10 nov. 2009 à 15:53
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 - 11 nov. 2009 à 09:02
Bonjour,

je suis pas un pro du javascript. J'ai récupéré un petit script sur internet que j'essaye d'adapter pour le rendre 'dynamique', afin de l'utiliser plusieurs fois dans la page.

Il s'agit d'un petit scroller (j'aurais besoin de 4 instances sur une page)

Voila mon code actuel. J'obtiens l'erreur "Objet is null" et pourtant en vérifiant avec des document.write, j'arrive bien à obtenir l'id et le style.top.

<script language="javascript">

var Timer;
var Pas = 3;

function moveLayer(Sens,Contenu) {

    Objet = document.getElementById(Contenu);


   if(parseInt(Objet.style.top) + (Pas*Sens) > 0)

  Objet.style.top = "0px";

   else

   Objet.style.top = (parseInt(Objet.style.top) + (Pas*Sens)) + "px";

   Timer = setTimeout("moveLayer(" + Sens + ");", 50);

   }
   
   </script>


si l'un de vous à une petite idée ....

4 réponses

monkey_monk Messages postés 641 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 10 août 2012 130
10 nov. 2009 à 16:37
Commence déjà par mettre des { et } à tes if et else... ensuite, est-ce que ton setTimeout fonctionne ?

Parce qu'il me semblait que pour passer un paramètre à une fonction via le setTimeout (et setInterval) il fallait utiliser une function anonyme, comme cà :

var timer = setTimeout(function(){moveLayer(Sens);},50);


Non ?
0
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 72
10 nov. 2009 à 16:44
En tout cas l'erreur se produit avant le Timeout..

j'ai un "objet is null " à la ligne 10, soit au niveau du

parseInt(Objet.style.top)

voila le code original que j'ai modifié (et qui fonctionne)

<script language="javascript">

 

var Timer;

var Pas = 3;

  

function moveLayer(Sens)

    {

    if(document.getElementById)

    Objet = document.getElementById("Contenu");

  else

   Objet = document.all["Contenu"];

   if(parseInt(Objet.style.top) + (Pas*Sens) > 0)

  Objet.style.top = "0px";

   else

   Objet.style.top = (parseInt(Objet.style.top) + (Pas*Sens)) + "px";

   Timer = setTimeout("moveLayer(" + Sens + ");", 50);

   }

   </script> 
0
Meelas Messages postés 15 Date d'inscription lundi 19 octobre 2009 Statut Membre Dernière intervention 16 novembre 2009 7
10 nov. 2009 à 17:16
Salut,

Dans ton premier message, à mon avis l'erreur est à cette ligne :

Timer = setTimeout("moveLayer(" + Sens + ");", 50);

Tu ne met pas le 2eme paramètre "Contenu" donc quand la fonction se déclenche de nouveau, elle ne trouve pas l'élément qui a pour id la valeur de Contenu. ;)

En la changeant en : Timer = setTimeout("moveLayer(" + Sens + "," + Contenu + ");", 50); ça doit fixer l'erreur.


Après quand tu enlève le 2nd paramètre ça marche bien. ^^
0
kalimbra Messages postés 469 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 octobre 2014 72
11 nov. 2009 à 09:02
ça marche du tonnerre.. merci beaucoup...

comme je disais, chuis une bxxx en JS ...
0