Scroll javascript

Résolu
Signaler
Messages postés
252
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
5 juin 2014
-
Messages postés
252
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
5 juin 2014
-
Bonjour,

j'ai fait un petit bout de code javascript pour faire un scroll
horizontal, ce code marche très bien sous firefox mais pose problème
sous IE. Voilà le code :

onmouseover="scroll = setInterval(function() {
if(document.getElementById(\'nomdudiv\').style.marginLeft!=\'-545px\')
{
document.getElementById(\'nomdudiv\').style.marginLeft =( parseInt(document.getElementById(\'nomdudiv\').style.marginLeft) - 5) + \'px\';
}
}
, 50)"
onmouseout="clearInterval(scroll)"

Le problème est que la boucle ne s'arrête jamais, le
clearinterval(scroll) semble ne pas être pris en compte.. J'ai essayé
beaucoup de choses mais n'arrive absolument pas à trouver la cause de
l'erreur, j'espère donc que quelqu'un pourra m'aider à trouver une
solution.

Merci d'avance.

12 réponses

Messages postés
252
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
5 juin 2014

Pour information j'ai fini par trouvé le problème :

J'avais appelé ma variable "scroll" ce qui ne plaisait apparemment pas du tout à IE, je l'ai renommée et maintenant tout marche très bien.

Mais Bul3 je te remercie encore une fois de ton aide, merci.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
bonjour,

ben ??? ça fonctionne parfaitement ???

mais comme tu ne nous fournis que peu de chose !
il a fallu que je me tape le html et le reste !
tu aurais au moins pu mettre le div, l'élément qui déclenche !

surtout qu'avec ce que j'ai fais ça marche
et pas chez toi ! donc ça ne correspondra pas !

<script>
    var scroll;
</script>

exemple

Cordialement

[mon Site][M'écrire]Bul
Messages postés
252
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
5 juin 2014

Navré, je pensais que l'erreur se trouvais dans le javascript et donc que lui seul suffirait. Voilà le html qui va avec :

//contenu du div

Voilà, j'espère que quelqu'un pourra m'aider.
Merci Bul3 d'avoir répondu mais je ne comprend vraiment pas pourquoi chez moi cela ne marche pas avec IE, surtout si tu dis que chez toi ça marche, je suis encore plus perdu...
Messages postés
252
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
5 juin 2014

Désolé pour le double post mais le précédent est vraiment illisible, je vous remet le code un peu mieux présenté :

    

    

          //contenu du div
    

    
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
ça ne peut pas marcher !
et ce avec tous les navigateurs !
je ne vois nulle part un élément html
qui a l'ID="nomdudiv"

as-tu essayé mon exemple chez toi ?
s'il fonctionne....
@+
Messages postés
252
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
5 juin 2014

C'est ma faute, je me suis trompé en copiant mon code..

          //contenu du div
    

est en réalité

          //contenu du div
    

Quant à ton code il fonctionne parfaitement, je n'y comprend plus rien..
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
peut-être  tu te mélanges les yeux avec ce que génère le php ( car tu utilises n'est-il pas ? )
1° regarde ( et met nous si nécessaire !!! ), l'extrait de la page html résultante
2° pour plus de clarté ( car je t'avoue que c'est pas terrible de faire
    directement comme tu fais pour la lisibilité  et les \' non plus,
     d'ailleurs inutiles  sauf si php, bonjour... )
    appelle une fonction
    au lieu de onmouseover="scroll = setInterval(function() {....
    fait        onmouseover="traitmt();"...
            et  function traitmt() { scroll = setInterval(function() { ..... } }
3° les valeurs mises ont changées ? 0 au lieu de -545... ?

[mon Site][M'écrire]Bul
Messages postés
252
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
5 juin 2014

D'abord, merci de prendre le temps de me répondre.

Ensuite :
- en effet j'utilise du php, c'est pour ça que j'ai changé le nom des div, pour na pas être embêté avec les variables et tout ça.. Mais il est vrai que tout ça est normalement dans des "echo();" et ce n'est pas toujours évident à gérer.. Pourtant il n'y a pas de problème de guillemets ou autre, quand je regarde le source de la page générée, tout est bon. Je ne peux pas vous le mettre, c'est beaucoup trop imposant.
- les \' sont là à cause du php, j'avoue ne pas avoir pris le temps de les enlever..
- je sais que question lisibilité c'est pas super mais vu que j'ai du mal avec le javascript je préfère faire comme ça dans un premier temps et une fois que ça marche faire de belles fonctions.
- en fait les valeurs n'ont pas changé c'est juste que je vous ai mis l'intégralité du code. En fait j'ai 2 flèches, une de chaque côté du div qui se déplace, une pour aller dans chaque sens. Au début je n'avais mis le code que d'une seule flèche mais comme vous m'en avez demandé plus j'ai ajouté le reste.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>quand je regarde le source de la page générée, tout est bon.
sûrement pas... sinon ça fonctionnerait ! non ?
mon exemple ne fonctionne-t-il pas !

>>Je ne peux pas vous le mettre, c'est beaucoup trop imposant.
l'extrait nécessaire pas tout !! surtout pas
la page générée peut-être visualisée, sauvegardée, puis
traitée comme un fichier html normal dont on prend
ce dont on a besoin.

>>en effet j'utilise du php,
au lieu de faire tout dans un echo
echo '

    

';
rien n'empêche, déjà :
?>

     </gras>').style.marginLeft) - 5) + 'px';}}, 50)"
          onmouseout="clearInterval(scroll)">

et comme je disais.... le javascript dans une fonction.

[mon Site][M'écrire]Bul
Messages postés
252
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
5 juin 2014

Alors voilà, j'ai suffit tes conseils :
(Je ne donne le code que d'une seul flèche, c'est pareil de l'autre côté)

Dans mon source j'affiche le code comme cela :
?>
   
').style.marginLeft!='-545px') {document.getElementById('contenu_<?php echo $lig["cat_id"]?>').style.marginLeft = (parseInt(document.getElementById('contenu_<?php echo $lig["cat_id"]?>').style.marginLeft) - 5) + 'px';}}, 50)" onmouseout="clearInterval(scroll)">

<?php

Et voilà ce que je récupère ensuite dans le code source de la page générée :

Ça marche toujours parfaitemen avec firefox mais toujours pas sous IE..
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
bah... je ne sais toujours pas ce qu'est document.getElementById('contenu_camp')
.. et met dans une fonction... peut-être pourras-tu mieux "suivre"
          [mon Site] [M'écrire] Bul         
Messages postés
252
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
5 juin 2014

Non mais laisse, je veux pas t'embêter, j'arriverais bien à trouver une solution.

Merci quand même.