将值传递给JavaScript中的函数

时间:2015-12-24 08:54:37

标签: javascript html

假设我有一些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编程书中获得了这段代码。

5 个答案:

答案 0 :(得分:6)

没有。基本上,当某个时间点值可用时,你会说使用什么功能。例如,您可以说当单击链接时,应调用您指定的函数handleControl。参数e由浏览器传递给它,它表示有关click事件的信息。

所以想想它:

  1. 浏览器检测到链接上的点击
  2. 它创建一个“事件对象”,其中包含有关事件的信息
  3. 它调用您使用“event object”指定的处理函数作为参数。您可以想象它会像anchor.onclick(event_info)那样,其中event_info对应e上的handleControl参数。
  4. 请记住,这不一定完全正在发生什么,但回答你的问题的重点是该参数来自其他地方(在这种情况下,浏览器),并传递给调用您指定的函数。

答案 1 :(得分:1)

我相信你只是想知道怎么做?

通俗地说:

  1. 嗨,我是一个元素,你可以点击我
  2. 好的,当我点击你时我想要执行函数handleControl,这里你得到了对该函数的引用。
  3. 谢谢
  4. 用户点击
  5. 哦,小男孩!我点击了,看看我的onclick属性
  6. 是否有功能参考
  7. 是..是的,我这样做!好的,让我解雇这个功能,并在执行此操作时提供一些事件信息
  8. 调用this.onclick(e);eEvent对象,this.onclick对处理函数的引用
  9. 如果这不是你要求的,我觉得很愚蠢,你可以忽略它;)

答案 2 :(得分:1)

您的问题是如何设置处理程序将参数传递给handleControl函数。换句话说,$customers = $this->Customer->find('list', array('fields' => array('email'), 'conditions' => array('event_id' => $this->request->data['Product']['event_id'], 'AND' => array('not' => array('Customer.email' => null),'not' => array('Customer.email' => '') ) ) ); 如何将值myAnchors[i].onclick = handleControl;传递给处理程序?

因此,e事件将触发一个函数:

onClick

在内部,您将点击锚点对象function(e) { // Whatever you want to do with clicked 'anchor' e, do it here }

在你的例子中,函数

e

也一样。

答案 3 :(得分:0)

所以当你这样做时

   myAnchors[i].onclick = handleControl;

您实际上正在注册回调函数        myAnchors [i]元素的点击事件。
浏览器的dom引擎跟踪每个dom元素的每个事件的所有回调。 现在当元素发生事件时,dom引擎会调用与元素和该事件对应的所有回调。但是它调用了一个参数,它是一个事件对象。

答案 4 :(得分:0)

这里函数handleControl订阅了DOM元素。
 因此,如果从DOM触发任何单击事件,则事件信息e将被传递给订阅的方法。