m0_46602893 2021-04-18 23:50 采纳率: 91.5%
浏览 75
已采纳

js问题,小白问题关于点击事件函数

<!DOCTYPE html>
<html lang="en">

<head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <script>
            function show() {

                 
                  console.log(arguments.length);
                  
                  alert(arguments[0])
                  
            }
            
           
            window.onload = function () {
                  var Btn = document.getElementById("btn");
               

                  Btn.onclick = show;
            }

            
      </script>
</head>

<body>
      <button id="btn">按钮</button>

</body>

</html>

问题一:事件绑定不是应该是:元素节点.on + 事件类型 = 匿名函数;

那么Btn.onclick = show;show就不是匿名函数为什么可以这么写?

问题二:Btn.onclick = show();当我给show加()的时候为什么刷新页面就变成undefined了?

问题三:Btn.onclick = show;这段代码的意思是不是把点击事件作为形参传入function show()函数内,但是show()是没有形参的,为什么可以传入形参?

  • 写回答

3条回答 默认 最新

  • Menkongkong 2021-04-19 12:05
    关注

    第一个问题:添加点击事件,添加的方式有很多,和匿名函数没有关系,show首先不可能是一个匿名函数,如果是匿名函数没有函数名怎么添加事件?而且要是用匿名函数的话需要这样Btn.onclick = () => {alert(1)};

    第二个问题:Btn.onclick = show(),show()变成了一个函数调用,也就是说,我在添加事件时先执行了一遍show()函数,然后将show()函数的返回值赋值给了Btn.onclick,但是你的show()函数并没有return返回值,那么show()在执行完后会返回undefined,并且这样是没有办法添加点击事件,而且在页面加载时点击事件就会触发。

    第三个问题:并不是把点击事件作为形参传入,有等号,那这就是一个赋值语句,意思就是,我要给Btn.onclick事件赋值一个函数,让我的Btn.onclick事件等于这个函数,这样触发点击事件时,也就等于触发了这个函数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能