关于给标签事件绑定带括号()和不带括号

本文介绍了HTML表单的onsubmit事件处理,包括不带括号、带括号和return加括号三种情况对表单提交的控制。详细解释了如何通过JavaScript动态绑定事件,并展示了错误和正确绑定方式的区别,强调了方法对象与方法执行的差异对事件处理的影响。
摘要由CSDN通过智能技术生成

首先: 带括号表示执行一次方法,不带括号表示 该方法对象

例如表单在提交时的 onsubmit事件:以表单submit 时 使用弹出确认框确认为例!

onsubmit 属于form表单提交时的默认触发事件,返回false对表单的提交可以进行阻断,返回其他值或不返回不会进行阻断

1.HTML中绑定事件

<!-- 
  1.不带括号
 -->
<form action="#" id="form1" onsubmit="myfunction" method="post">
    <input type="submit" value="提交">
</form>
<!-- 
 此时等同于:
    onsubmit(){
        myfunction;
    }
既不会对提交事件进行阻断,也不会执行myfunction方法
 -->
<!-- 
  2.带括号
 -->
<form action="#" id="form2" onsubmit="myfunction()" method="post">
    <input type="submit" value="提交">
</form>
<!-- 
 此时等同于:
    onsubmit(){
        myfunction();
    }
不会对提交事件进行阻断,但是会执行myfunction方法
 -->
<!-- 
  3.return + 带括号
 -->
<form action="#" id="form3" onsubmit=" return myfunction()" method="post">
    <input type="submit" value="提交">
</form>
<!-- 
 此时等同于:
    onsubmit(){
      return  myfunction();
    }
可以对提交事件进行阻断,也会执行myfunction方法
 -->

<script>
function myfunction() {
        return confirm('确认提交?');
    }
</script>

 在标签中赋值,及默认将赋值内容添加到 onsubmit方法的方法体中。

2.JS中添加绑定事件


<form action="#" id="form4"  method="post">
    <input type="submit" value="提交">
</form>

<script>

function myfunction() {
        return confirm('确认提交?');
    }
<!-- 
  1.错误写法
 -->
 document.getElementById("form4").onsubmit = myfunction();

<!-- 
 = 为赋值操作 
myfunction()代表执行方法
此时,将此onsubmit 的引用指向 myfunction方法的执行结果(返回值),虽然执行不会报错,但并未起到阻断效果
 -->
<!-- 
  1.正确写法
 -->
 document.getElementById("form4").onsubmit = myfunction;
   或
 document.getElementById("form4").onsubmit = function () {
        return confirm('确认提交?');
    }
<!-- 

 此时的 myfunction 代表方法对象
 将此onsubmit 的引用指向 myfunction 方法对象 或 匿名方法对象
    可简单理解为 
                原:提交执行
                    Form.submit(){
                        return onsubmit();
                    }
                    
     更改引用指向后:提交执行 
                     Form.submit(){
                        return myfunction();
                    }
                   
 -->
</script>

本文仅为个人理解,如理解有误还望指出!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值