weixin_45735939
爱法斗学编程
采纳率72.7%
2019-11-28 21:05

关于js使用动态指定方式来绑定事件的一个疑问

10

最近在看教材,教材里讲的是先分配时间,再调用方法,如下:

<script type="text/javascript">
            document.getElementById('input_1').onclick=function(){show();}
            form1.name_1.onclick();
        </script>

这样的话,打开浏览器,直接就弹出这个告警框了,当然点击也会弹出。
我索性将第二局调用删掉了,竟然是没问题的。如下:

<script type="text/javascript">
            document.getElementById('input_1').onclick=function(){show();}
            // form1.name_1.onclick();
        </script>

那个上面form1.那一句已经变成注释了。
求问各位朋友这点是哪里出错了吗?还是本身就不需要第二句调用那个操作的。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • wojiushiwo945you 毕小宝 2年前

    区别是:

    第一行代码是给 input_1 这个 id 的元素绑定事件,此时需要由用户手动点击该表单,才能触发 show() 方法。
    第二行是用 js 代码触发 form1.name 这个表单的 onclick 事件,相当于帮用户点了一下这个表单。
    

    注释掉第二行后,如果你手动点一下 name 这个表单按钮,跟不注释掉的效果是一样的。前端开发过程中,有时需要用代码触发一些事件,就是onclick() 这个的作用,直接调用事件的函数。

    点赞 2 评论 复制链接分享
  • qq_37453008 杭电大法好 2年前

    这个是本身就不需要第二句调用那个操作的。

    点赞 1 评论 复制链接分享
  • weixin_44208050 大道寺知世` 2年前

    第一句是设置点击触发,第二句是直接调用

    xxx.onclick=show();//onclick鼠标点击事件
    和
    show();
    就是点了才触发和直接触发一个道理
    
    点赞 评论 复制链接分享
  • qq_43137221 冰·羽 2年前

    document.getElementById('input_1').onclick=function(){show();}

    这句意思给 input_1 加上一个操作 操作行为 为点击

    form1.name_1.onclick();
    这句是 对 name_1 执行 点击操作

    理论上 如果你想在初始化的时候执行这个点击中的方法 可以 直接写成 show();

    点赞 评论 复制链接分享
  • weixin_44058725 雨生百谷,方为谷雨 2年前

    第二句话相当于页面一进来自动点击

    点赞 评论 复制链接分享
  • jslang 天际的海浪 2年前

    input_1 和 form1.name_1 是同一个元素吗?
    是的话,注解掉第二行后应该是不会直接执行show()的,只有点击才会执行show()。
    如果你还是直接执行了show(),应该是你在其它地方调用了show()。或者这个警告框标签本来就是显示的。
    也可能是浏览器缓存了修改前的页面,你清理下浏览器缓存试试。

    点赞 评论 复制链接分享