Je n'ai jamais utilisé JavaScript pour écrire une fonction qui interagit avec les éléments HTML alors j'espérais pouvoir obtenir de l'aide. J'ai une image sur laquelle je clique. Je veux le déplacer de sa position actuelle vers la gauche ou vers la droite en fonction du dernier mouvement.Déplacement d'un élément html en arrière avec javascript onclick
Par exemple, la première fois que l'utilisateur clique dessus, il se déplace vers la gauche, la seconde vers la droite et ainsi de suite. Voici le code html et css de l'élément:
La transformation est juste pour le centrage.
Voici le javascript que j'ai écrit jusqu'à maintenant; à ce moment rien ne se produit lorsque le div est cliqué:
var logo = document.getElementById('logo');
var dir = -1;
var diff = 50;
function toMove(){
for(int i=0; i<diff; i++){
logo.style.left += ""+ dir +"px";
window.setTimeout(100);
}
dir = dir*-1;
}
#logo {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div id="logo">
<a onclick="toMove()">
<img src = "mypic.jpg"/>
</a>
</div>
La partie que je l'ai commenté était la première option que j'ai essayé qui ne fonctionne pas. Quelqu'un peut-il me dire quel est mon problème? Merci!
MISE À JOUR: Modifié le script à utiliser uniquement sur la fonction toMove() qui fonctionne sur la variable dir. Aussi modifié le HTML pour utiliser un wrapper autour de l'img pour appeler la fonction directement au lieu d'utiliser un actionlistener sur le div. En outre, je ne pense pas avoir très bien clarifié au départ, l'idée est de créer une transition en douceur à travers l'écran, plutôt que de simplement réinitialiser l'emplacement immédiatement. Le code ne fonctionne toujours pas, des suggestions?
Il vous manque une ouverture '{' ici: 'autre MoveRight (mouvement) \t \t } ' – Cyclonecode
En cliquant sur" TIDY "dans votre extrait montre au moins une erreur – mplungjan
* Utilisez window.onload pour accéder au DOM après le chargement. * Vos fonctions sont erronées. Peut-être que vous voulez dire 'function moveLeft (n) { var left = parseInt (logo.style.left); si (gauche - 1> gauche - n) window.setTimeout (moveLeft, 100); logo.style.left = (gauche - 1) + 'px'; } ' – mplungjan