javascript obtenir les coordonnées x et y sur le clic de la souris
j'ai une petite balise div qui quand je clique dessus (onClick
event), il exécutera le printMousePos()
fonction.
C'est le HTML
tags:
<html>
<header>
<!-- By the way, this is not the actual html file, just a generic example. -->
<script src='game.js'></script>
</header>
<body>
<div id="example">
<p id="test">x: , y:</p>
</div>
</body>
</html>
c'est la fonction printMousePos dans un seperate .fichier js:
function printMousePos() {
var cursorX;
var cursorY;
document.onmousemove = function(e){
cursorX = e.pageX;
cursorY = e.pageY;
}
document.getElementById('test').innerHTML = "x: " + cursorX + ", y: " + cursorY;
}
Oui, la fonction fonctionne réellement (il sait quand vous cliquez dessus et tout et tout), mais il renvoie undefined de x et de y, donc je suis en supposant que le get x et y le code de la fonction est incorrect. Des Idées? Je sais aussi qu'il n'y a pas de fonctions intégrées dans javascript lui-même pour retourner les x et y comme dans java, ex.. y aurait-il un moyen de le faire avec dire JQuery ou php? (évitez ceux si possible, javascript serait mieux). Merci!
3 réponses
Comme ceci.
function printMousePos(event) {
document.body.textContent =
"clientX: " + event.clientX +
" - clientY: " + event.clientY;
}
document.addEventListener("click", printMousePos);
MouseEvent.clientX Lecture seule
La coordonnée X du pointeur de la souris en coordonnées locales (DOM content).MouseEvent.clientY Lecture seule
La coordonnée Y du pointeur de la souris en coordonnées locales (DOM content).
cela ressemble à votre printMousePos
la fonction:
- obtenir les coordonnées X et Y de la souris
- ajouter ces valeurs au HTML
Actuellement, il fait ceci:
- crée des variables (non définies) pour les coordonnées X et Y de la souris
- Attache une fonction à la "mousemove" événement (qui va définir ces variables pour les coordonnées de la souris lorsqu'il est déclenché par un mouvement de la souris)
- ajoute le courant valeurs de vos variables au HTML
vous voyez le problème? Vos variables ne sont jamais définies, car dès que vous ajoutez votre fonction à l'événement "mousemove" vous les Imprimez.
il semble que vous n'avez probablement pas besoin de cet événement mousemove du tout; je voudrais essayer quelque chose comme ceci:
function printMousePos(e) {
var cursorX = e.pageX;
var cursorY = e.pageY;
document.getElementById('test').innerHTML = "x: " + cursorX + ", y: " + cursorY;
}
Modifier: N'a pas remarqué que vous n'étiez pas en passant un argument pour printMousePos()
, mis à jour à printMousePos(e)
la solution la plus simple est:
jeu.js:
document.addEventListener('click', printMousePos, true);
function printMousePos(e){
cursorX = e.pageX;
cursorY= e.pageY;
$( "#test" ).text( "pageX: " + cursorX +",pageY: " + cursorY );
}