能麻烦大佬讲讲 <a ... onclik = "functionname(this)" > 和 a_obj.onclick = functionname 这两种事件处理方式吗?

2017-09-19 19:01:03 +08:00
 Newyorkcity
我先在《 Head First HTML5 》上学了后一种,现在又在《 JS DOM 编程艺术》上看到前一种,不能把它们统一解释背后的机制我觉得好难受。

问题比较多,在此先谢过。

最根本的问题—— onclick 这个属性,它到底是怎么运行的?
②第一种方法,书上说 JS 会自动将 this 解释为引发该事件的那个元素(对象);那么如果我把 this 改成 that 呢?改成 event 呢?还会当做引发事件的元素(对象)被处理吗?
③第二种方法下,有没有办法让 functionname 接受其它参数?比如说我是这样定义 functionname 这个函数的

function functionname(a,b){}

有没有办法给 b 赋值?(如果不能用第一种方法能不能呢?)
而在这种方法下,第一个形参,(不论它写作 event 也好,写作 e 也好还是写作 a 也好),是不是都会被自动当做“事件”对象,然后 a.target 就是引发事件的元素对象??

谢谢!~
1410 次点击
所在节点    问与答
2 条回复
xzl2021
2017-09-19 20:19:16 +08:00
对于第②个问题你自己试试不就好了?
第③个问题可以这样写
function foo (a,b) {
function bar (e) {
//e 代表 event;
//a,b 之类代码;
}
return bar;
}

Obj.onclick = foo(a,b);
Newyorkcity
2017-09-19 22:40:11 +08:00
@xzl2021 Obj.onclick = foo(a,b) ??这种写法不是非法的吗? onclick 属性只能赋值函数名不能赋值具体的函数行为啊,不能带括号的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392041

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX