JS小问题,大哥帮帮忙
答案:3 悬赏:20 手机版
解决时间 2021-07-17 18:14
- 提问者网友:寂寞撕碎了回忆
- 2021-07-17 05:38
你好啊,看到你的回答很详细,特向你求助!
<SCRIPT language=javascript>
function click() {
if (event.button==2) {
alert('对不起,禁止使用此功能.')
}
}
document.onmousedown=click;
</SCRIPT>
我想问一下,这里的onmousedown事件激发的click函数为什么不用加括号呢?
而在其它地方调用函数为什么又要加括号呢?
最佳答案
- 五星知识达人网友:愁杀梦里人
- 2021-07-17 07:05
Hi~~
我觉得给你解释这个问题还是举个例子比较好~~
首先,我们看看你的代码:
---------------------------------------------------------------------------
<script type="text/javascript">
function click()
{
if (event.button == 2)
{
alert('test');
}
}
---------------------------------------------------------------------------
document.onmousedown = click;
然后,了解一下事件处理函数~
mousedown是指鼠标按键按下,至于你的鼠标有多少个按键我们就不管了哈~~
onmousedown是以上事件的处理函数
接下来,我们改写一下你的代码,这段代码与你的那段实际结果是一样的,代码如下:
---------------------------------------------------------------------------
<script type="text/javascript">
var click = function(){
if (event.button == 2)
{
alert('test');
}
}
document.onmousedown = click;
</script>
---------------------------------------------------------------------------
看出来有什么不同了吧,刚才代码中的函数在这儿变成了一个变量(实际上它是一个匿名函数)
那么在这儿它本来没有“括号”,总不能给它硬加一个括号吧~~
值得注意的是,这样的写法只能通过事件处理函数来调用,不能通过其他方法来调用。
其实,还有另外一种写法,如下:
---------------------------------------------------------------------------
document.onmousedown = function(){
if (event.button == 2)
{
alert('test');
}
};
---------------------------------------------------------------------------
效果当然也和上面的两个一模一样咯
我写这三种方法的目的是想让你了解,其实事件处理函数就是让你把另外的一个函数赋值给它(也可以说让它来调用)
而在HTML代码中,onmousedown相当于一个节点的属性,比如说
...
<body onmousedown="click()">
...
最终,这个东东还是会被翻译成document.onmousedown = click的~~
当然,如果不怕麻烦的话也可以这样写:
...
<body onmousedown="document.onmousedown = click;">
...
最后的结论就是,请你记住,事件处理函数在调用其它函数的时候,都是不能加“括号”滴~~
全部回答
- 1楼网友:胯下狙击手
- 2021-07-17 10:07
在body里的调用相当于类方法的请用.
而mousedown所调用的是一个函数的句柄,相当于C#中的委托 C中的指针
- 2楼网友:人间朝暮
- 2021-07-17 08:35
click代表这个函数 是个对象。。。。在赋给mousedown事件的时候不会运行,其实就是这个函数的句柄
click()是这个函数运行后的返回值,,赋给事件的时候会运行把返回值赋值给实践 显然加括号 不可以
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯