JAVASCRIPT Problème de position

Résolu/Fermé
Bilow - 12 mai 2010 à 16:50
 Bilow - 12 mai 2010 à 21:53
Salut tout le monde !

J'ai écrit une page en HTML/ Javascript, qui, lors d'un clic sur un lien, doit faire déplacer une balise. Mais cela ne fonctionne pas.
La première fois de l'éxécution de la fonction move(), tout fonctionne bien, mais la deuxième fois, bug à la ligne 7 : Argument non valide.
Mais pourquoi ?

Merci d'avance,
Bilow.

<html>
<head>
<title>JS Move</title>
<script type="text/javascript">
function move(balise, pixel, px_sec, facteur){
if(pixel!=0){
document.getElementById(balise).style.left=document.getElementById(balise).style.left+px_sec; // Ligne 7
pixel-=px_sec;
px_sec*=facteur;
move(balise, pixel, px_sec, facteur);
}
}
</script>
</head>
<body>
<p style="border: 1px black solid; position:absolute;" id="balise"><a href="javascript:move('balise', 200, 5, 1)">Hello world !</a></p>
</body>
</html>
A voir également:

2 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 mai 2010 à 18:54
le pb vient du fait que la valeur retournée par document.getElementById(balise).style.left

est 200px et pas 200 donc l'addition 200px+5 ne marche pas

<html>
<head>
<title>JS Move</title>
<script type="text/javascript">
function move(balise, pixel, px_sec, facteur){
if(pixel!=0){
var old_pos=document.getElementById(balise).style.left; // de la forme 200px
alert("Old pos: "+old_pos);
//recup valeur numerique
masque=new RegExp("[0-9]+","g");
if (tab=old_pos.match(masque)) {
	old_pos_num=parseInt(tab[0]);
}

var new_pos=eval(old_pos_num+px_sec);
document.getElementById(balise).style.left=new_pos; 
pixel-=px_sec;
px_sec*=facteur;move(balise, pixel, px_sec, facteur);

}
}
</script>
</head>
<body>
<p style="border: 1px black solid; position:absolute;" id="balise"><a href="javascript:move('balise', 200, 5, 1)">Hello world !</a></p>
</body>
</html>
2
Salut !

Eh bien merci beaucoup ! Parfait !
Aucun bug...

Bye ;)
0