为什么这个基本的JavaScript事件不起作用?

时间:2013-11-04 16:21:20

标签: javascript events

试着用我当前非常有限的JavaScript知识来获得一些乐趣。

http://jsfiddle.net/pDMq9/

为什么这不起作用?我做错了什么?

HTML

<body>

<input type="button" value="Click me" id="button" />

</body>

的Javascript

var x = e.clientX;
var y = e.clientY;

var p = document.getElementById("button");

function mousedown() {
    if (p.mousedown) {
        alert(x, y);
    }
}

6 个答案:

答案 0 :(得分:8)

  1. 您尝试从mousedown函数之外的事件中获取值(即在事件存在之前)
  2. 您永远不会将mousedown函数指定为事件处理程序
  3. 您不接受mousedown函数
  4. 的任何参数
  5. 您在mousedown函数中测试mousedown 属性,无明显原因
  6. 您将多个参数传递给alert
  7. 所以要解决它:

    function mousedownHandler(e) {
        var x = e.clientX;
        var y = e.clientY;
        alert(x + ", " + y);
    }
    
    var p = document.getElementById("button");
    p.addEventListener('mousedown', mousedownHandler);
    

答案 1 :(得分:1)

您必须将clickmousedown事件附加到元素。在函数内部,您可以获取事件并从中检索clientXclientY

<强>的JavaScript

var p = document.getElementById("button");

p.onclick = function mousedown(e) {
    var x = e.clientX;
    var y = e.clientY;
    alert(x + ' ' + y);
}

<强>演示

http://jsfiddle.net/8gzMj/

答案 2 :(得分:0)

  1. e不是全局变量。通常e是与事件处理程序关联的事件:

           function mousedownHandler(e)
           {
               //manage the event
               console.log(e.clientX, e.clientY);
           }
    
  2. 事件处理程序应绑定到相应的事件:

      var p = document.getElementById("button");
      p.onmousedown = mousedownHandler;
    
  3. Here是jsFiddle中示例的运行分支。

答案 3 :(得分:0)

首先,您需要将一个事件附加到元素。然后你需要传递'e'或事件。然后你可以阅读它的属性。

var p = document.getElementById("button");

p.addEventListener('mousedown', mousedown);

function mousedown(e) {
    var x = e.clientX;
    var y = e.clientY;

    alert(x, y);

}

http://jsfiddle.net/cSUfL/

答案 4 :(得分:-1)

你没有调用该函数,你必须使用这个

  <body>

 <input type="button" value="Click me" id="button" onClick="mousedown()" />

 </body>

答案 5 :(得分:-1)

<!DOCTYPE html>
<html>
<head>
    <title>HTML</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript">
        function mousedown(e) {
            var x = e.clientX;
            var y = e.clientY;
            alert(x + "\n" + y);
        }
    </script>
</head>
<body>
    <table>
        <input type="button" value="Click me" id="button" onmousedown="mousedown(event);" />
        <!-- alternatively -->
        <button id="button2" onmousedown="mousedown(event)">Click me</button>
    </table>
</body>
</html>