[英]Passing a value to a function in JavaScript
假设我有一些HTML锚元素,并且我想为每个元素设置一个处理程序。
window.onload = function() {
// I select all of the anchors
var myAnchors = document.querySelectorAll("a");
// I iterate through the anchors and set a handler to each of them
for (var i = 0; i < myAnchors.length; i++) {
myAnchors[i].onclick = handleControl;
}
}
function handleControl(e) {
var id = e.target.getAttribute("id");
}
我不明白如何设置处理程序将参数传递给handleControl
函数。 换句话说, myAnchors[i].onclick = handleControl;
将值e
传递给处理程序?
我从JavaScript编程书中获得了这段代码。
没有。 基本上,您说的是在某个时间点值可用时应使用什么功能。 因此,例如,您要说的是,单击链接时,应handleControl
您指定的函数handleControl
。 参数e
由浏览器传递给它,它表示有关click事件的信息。
所以想像一下:
anchor.onclick(event_info)
,其中event_info
对应于handleControl
上的e
参数。 请记住,这不一定完全是正在发生的事情,但是回答您的问题的关键是该参数来自其他位置(在本例中为浏览器),并传递给您指定的函数的调用。
相信您只是想知道如何?
用外行的话来说:
handleControl
函数,在此您获得了对该函数的引用。 onclick
属性上是否有函数引用 this.onclick(e);
其中e
是Event
对象, this.onclick
对处理函数的引用 如果这不是您要的,我会感到很愚蠢,您可以忽略此;)
您的问题是设置处理程序如何将参数传递给handleControl函数。 换句话说, myAnchors[i].onclick = handleControl;
将值e
传递给处理程序?
因此, onClick
事件将触发一个功能:
function(e) {
// Whatever you want to do with clicked 'anchor' e, do it here
}
在内部,你会得到点击的锚对象e
这里。
在您的示例中,函数
function handleControl(e) {
var id = e.target.getAttribute("id");
}
一样。
所以当你这样做
myAnchors[i].onclick = handleControl;
您实际上是在向myAnchors [i]元素的click事件注册一个回调函数。
浏览器的dom引擎跟踪每个dom元素的每个事件的所有回调。 现在,当元素发生事件时,dom引擎将调用与该元素和该事件对应的所有回调。 但它使用事件对象的参数进行调用。
在这里, handleControl
函数已订阅DOM元素。
因此,如果从DOM触发任何点击事件,则事件信息e将传递给订阅的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.