V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Newyorkcity
V2EX  ›  问与答

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

  •  
  •   Newyorkcity · 2017-09-19 19:01:03 +08:00 · 1397 次点击
    这是一个创建于 2628 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我先在《 Head First HTML5 》上学了后一种,现在又在《 JS DOM 编程艺术》上看到前一种,不能把它们统一解释背后的机制我觉得好难受。

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

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

    function functionname(a,b){}

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

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

    Obj.onclick = foo(a,b);
    Newyorkcity
        2
    Newyorkcity  
    OP
       2017-09-19 22:40:11 +08:00
    @xzl2021 Obj.onclick = foo(a,b) ??这种写法不是非法的吗? onclick 属性只能赋值函数名不能赋值具体的函数行为啊,不能带括号的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2550 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 15:51 · PVG 23:51 · LAX 07:51 · JFK 10:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.