黑马程序员技术交流社区

标题: JavaScript中事件关联方法弄不明白的地方? [打印本页]

作者: 王海舟    时间: 2012-9-1 10:13
标题: JavaScript中事件关联方法弄不明白的地方?
源代码如下:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <title></title>
  5. <script type="text/javascript">
  6. function f1() {
  7. alert("我是f1");
  8. }
  9. function f2() {
  10. alert("我是f2");
  11. }
  12. </script>
  13. </head>
  14. <body>
  15. <input type="button" value="请点我1" onclick="f1()" />
  16. <input type="button" value="请点我2" onclick="document.ondblclick=f2" />
  17. </body>
  18. </html>
复制代码
问题如下:
<input type="button" value="请点我1" />
<input type="button" value="请点我2" />
这两行代码中:
前一行的方法f1后面加了括号,为"onclick="f1()" ;
后一行的方法f2后面没有加括号,为onclick="document.ondblclick=f2"

我的理解是:将方法和这个事件onclick相关联,其实就是将方法的地址的引用传给这个事件中包含的委托链。
我弄不明白的是为什么前一行代码方法f1后面要加上括号呢?这样岂不是调用方法f1,然后将f1的返回值赋值给onclick事件?onclick事件应该接收的是地址(即指针)呀,怎么变成接收一个方法的返回值了呢?
或者说这两者有什么区别和联系,希望帮我分析下?谢谢!

作者: 许庭洲    时间: 2012-9-2 12:37
1. 前台中控件的onclick事件,是触发事件;
2. JS中的alert("我是f1");不会返回给onclick事件,因为alert("我是f1");是弹出一个Windows消息框;





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2