Posez votre question Signaler

Problème JS [Résolu]

kalimbra 417Messages postés 22 mars 2008Date d'inscription 8 février 2012Dernière intervention - Dernière réponse le 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 ....
Lire la suite 

Problème JS »

4 réponses
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
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> 
Ajouter un commentaire
Réponse
+0
moins plus
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. ^^
Ajouter un commentaire
Réponse
+0
moins plus
ça marche du tonnerre.. merci beaucoup...

comme je disais, chuis une bxxx en JS ...
Ajouter un commentaire
Ce document intitulé « Problème JS » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Réduire les coûts d'impression dans l'entreprise