Discuss / JavaScript / 温习了好多遍,还是不甚明了,参数e是怎么传的。

温习了好多遍,还是不甚明了,参数e是怎么传的。

Topic source

reader.onload = function(e) 这个参数e,理解不能。因为change事件所监听的function ()这个外层函数是无参数的。怎样才能向内层的(e)传递参数呢。

有劳廖大。

你这里弄错了函数了。 在实例代码中,最后传入参数e的是回调函数reader.onload :

reader.onload = function (e) { ... }

change事件则是通过添加监听事件来捕获:

// 监听change事件:
fileInput.addEventListener('change', function () { ... }

上面change事件的函数并没有传入参数。参考资料:

w3c-onload事件 w3c-onchange事件

#2回复理解错你的意思很抱歉!

层主想表达的是onload事件的参数e(vent)是否从onchange事件外部传递进来,如果是,那么在示例中并onchange函数并没有传进来任何参数,那么参数e是怎么来的。

其实,onchange, onload等事件是通过回调的方式执行的,首先是HTML DOM Event 对象分发事件句柄(event handlers)给可能需要执行的函数,当某个事件被触发(fire)时,句柄执行对应元素的onload等事件定义函数。

但是如果需要获得event对象所存储的状态(例如获取调用onload事件的元素),那么可以通过event.target(例子中的e.target)来获得,这个event就是回调参数,实际上引用的是DOM Event对象,处在dom树的顶层。

而依照程序执行状况来看,这个回调参数Event是在addListener函数中处理传入,所以onchange事件被触发时也已经一并传入了Event对象实例,change事件中的function () {}参数列表为空是表示没有用户自定义参数!

如果上述观点有错误,欢迎大家指正!

毛毛都嘟

#4 Created at ... [Delete] [Delete and Lock User]

event简单看成是事件对象

经过断断续续的学习,这个传参已经懂了。当时怎么也不理解,有一天看一本关于dom的书,看懂了。谢谢楼上二位的回复。

是不是因为廖老师前面没有讲JavaScript事件……


  • 1

Reply