JavaScript函数中的事件/对象

JavaScript函数中的事件/对象,javascript,function,html,Javascript,Function,Html,如果我有一些像这样的HTML: <a onmouseover='SetTopLeft(this);'href='#'>Click me!</a> …其中e是事件,o是“此”?我可能实际上不需要这个对象,但我想我可能确实需要这个事件。我不介意更好地理解JavaScript中的工作原理,即何时/如何传递事件以及何时/如何传递调用对象?我可以选择通过哪一个吗?我两个都能通过吗 基本上,我真正需要做的是在定位点所在的DIV内获取鼠标坐标(即使该DIV只是网页的一部分,并且无论浏

如果我有一些像这样的HTML:

<a onmouseover='SetTopLeft(this);'href='#'>Click me!</a>
…其中e是事件,o是“此”?我可能实际上不需要这个对象,但我想我可能确实需要这个事件。我不介意更好地理解JavaScript中的工作原理,即何时/如何传递事件以及何时/如何传递调用对象?我可以选择通过哪一个吗?我两个都能通过吗

基本上,我真正需要做的是在定位点所在的DIV内获取鼠标坐标(即使该DIV只是网页的一部分,并且无论浏览器是否全屏),我在完成这项工作时经历了一段艰难的时间。我所看到的在某些元素中获取这些坐标的大多数示例都使用事件以及该事件的pageX和pageY属性


顺便说一下,这必须在IE6以后的版本中起作用。Firefox也不错。其他的是不必要的。

是的,在内联代码
中,此
指元素的HTML DOM对象,而
事件
指事件对象。因此,您可以执行以下操作:

HTML


通常,应该避免使用内联事件处理程序。它混合了表示(HTML)和逻辑(JavaScript)。quirksmode.org提供了关于事件处理的所有知识

由于在事件处理程序中,
this
通常指处理程序绑定到的元素,因此您还可以显式地将
this
设置为元素,并将事件对象作为第一个参数传递:

<a onmouseover='SetTopLeft.call(this, event);'href='#'>Click me!</a>

有关更多信息,请参阅


除此之外,如果你的链接没有链接到任何东西,最好使用一个简单的
span
元素或按钮,并相应地设置它的样式。

这样你就可以传递1)两者都不传递,2)元素,或3)事件和元素都传递?这些总是三个选项吗?四个选项:都不是,只有元素,只有事件,或者两者都不是。它们都可以在内联代码中使用。传递给函数的数量和顺序取决于您。我想我看到了:CallingMethod()、CallingMethod(事件)、CallingMethod(这个),然后CallingMethod(事件,这个)或CallingMethod(这个,事件)。我认为把“事件”放在第一位是惯例,因为这是你展示的。谢谢事实上,我这样做是为了模仿你的代码:-)不确定是否有现成的约定。当然,您可以选择以任何一种方式对其进行排序。如果您对此类功能使用span,请确保添加
tabindex=0
,以便使用键盘导航的用户可以聚焦元素。
<a onmouseover='SetTopLeft(event, this);' href='#'>Click me!</a>
function SetTopLeft(e, obj) {...}
<a onmouseover='SetTopLeft.call(this, event);'href='#'>Click me!</a>