javascript在鼠标点击时获取x和y坐标

Bry*_*ahn 40 html javascript onclick onmouseclick

我有一个小div标签,当我点击它(onClick事件)时,它将运行该printMousePos()功能.这是HTML标签:

<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>
Run Code Online (Sandbox Code Playgroud)

这是一个单独的.js文件中的printMousePos函数:

function printMousePos() {
    var cursorX;
    var cursorY;
    document.onmousemove = function(e){
    cursorX = e.pageX;
    cursorY = e.pageY;
}
    document.getElementById('test').innerHTML = "x: " + cursorX + ", y: " + cursorY;
}
Run Code Online (Sandbox Code Playgroud)

是的,该函数实际上有效(它知道你何时点击它和所有),但它返回x和y的未定义,所以我假设函数中的get x和y代码是不正确的.有任何想法吗?我也知道javascript本身没有任何内置函数可以像java一样返回x和y,ex ..有没有办法用JQuery或php做到这一点?(尽管可能,尽量避免那些,javascript会是最好的).谢谢!

Jon*_*han 73

像这样.

function printMousePos(event) {
  document.body.textContent =
    "clientX: " + event.clientX +
    " - clientY: " + event.clientY;
}

document.addEventListener("click", printMousePos);
Run Code Online (Sandbox Code Playgroud)

MouseEvent - MDN

MouseEvent.clientX Read only
鼠标指针在本地(DOM内容)坐标中的X坐标.

MouseEvent.clientY Read only
鼠标指针在本地(DOM内容)坐标中的Y坐标.

  • 回复:[pageX/Y与clientX/Y](http://www.bennadel.com/blog/1869-jquery-mouse-events-pagex-y-vs-clientx-y.htm) (2认同)

Kyl*_*lok 7

听起来你的printMousePos功能应该是:

  1. 获取鼠标的X和Y坐标
  2. 将这些值添加到HTML

目前,它这样做:

  1. 为鼠标的X和Y坐标创建(未定义)变量
  2. 将函数附加到"mousemove"事件(当鼠标移动触发时将这些变量设置为鼠标坐标)
  3. 将变量的当前值添加到HTML

看到问题?您的变量永远不会被设置,因为只要将函数添加到"mousemove"事件中,就会打印它们.

看起来你可能根本不需要那个mousemove事件; 我会尝试这样的事情:

function printMousePos(e) {
    var cursorX = e.pageX;
    var cursorY = e.pageY;
    document.getElementById('test').innerHTML = "x: " + cursorX + ", y: " + cursorY;
}
Run Code Online (Sandbox Code Playgroud)