【问题标题】:JavaScript uncaught reference errorJavaScript 未捕获的引用错误
【发布时间】:2014-10-11 21:27:58
【问题描述】:

我正在尝试在单击鼠标的任何位置获取图像。但收到此错误:

Uncaught ReferenceError: evt is not defined onmousedown

HTML:

<html>
<head>
    <title>Image move</title>
    <script type="text/javascript" src="pos.js">
    </script>
</head>
<body onmousedown="display(evt)">
<img id="myimage" height=300 width=300 src="pos.jpg" style="position:absolute;top:100px;left:100px"; alt="mypos" />
</body>
</html>

JS:

function display(evt)
{
    var dom = document.getElementById("myimage");
    dom.style.top = evt.clientY+"px";
    dom.style.left = evt.clientX+"px";
}

我必须明确写event 吗?有什么问题?

【问题讨论】:

  • 我认为括号是为定义函数和其他东西而保留的。我认为你不能在函数名中使用方括号,它会混淆 JavaScript。

标签: javascript html


【解决方案1】:

只需onmousedown="display(event);"。活动事件是event,而不是evt

当诸如onmousedown 之类的事件发生时,与其关联的JavaScript 片段将在定义event 对象的范围内执行。 一些 浏览器使其在全球范围内也可以作为window.eventas elaborated by this response 使用,这意味着您不必将其显式传递给display 函数。

【讨论】:

  • 是的,它确实解决了问题。能否请您详细说明一下。
  • @Robin:当您使用on* HTML 属性时,浏览器会生成function(event) { /* attribute content */ } 形式的函数。因此,为了引用事件对象,您必须使用event。你使用了evt,但它没有在任何地方定义,既不是隐含的也不是显式的。
  • @FelixKling 谢谢,现在更有意义了。
  • @Alexander 好的,知道了。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-12-09
  • 2013-04-10
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多