事件处理函数中返回值
事件处理函数返回值其实指当事件发生时,浏览器会执行默认的操作,而当事件处理函数会返回一个结果,而当这个结果为true时,浏览器会继续执行默认操作,否则会停止执行。
如果还是不懂的话,我们看一下下面这个实例:
当点击超链接标签时,如果check()的值为true,那么浏览器会跳转到abc.html页面中去,如果check()的值为false,点击超链接标签就不会跳转
这里return其实是对事件对象中的returnValue属性值的设置,而该属性就决定了该事件操作是否继续操作,当retrunValue为true时则继续操作,为false时则中断操作。
然而直接执行函数check,不使用return返回将不会对eturnvalue进行设置所以会默认地继续执行操作,比如如下实例
上面的实例就是不管check()的结果是true还是fasle,浏览器都会跳转到abc.html 页面中去。
所以必须使用return返回。
事件处理函数返回值在表单中也存在这种情况,如下图
判断用户名是否为空,如果为空就不提交表单,否则就提交表单...跟上面理解是一样的。
讲到这里有很多同学在这里还能理解,但是呢,换个地方,换个事件绑定方式就不能理解了。
比如:在DOM对象上绑定事件:
很多人不能理解的是:在html元素上绑定事件时,return用了两次,才能阻止表单的提交,为什么在DOM对象上绑定事件时只用了一次return就能阻止表单提交,这里我们就要看看为什么了。
我们看看直接打印btn.onclick的结果,发现我们在html元素上绑定的事件处理函数fn是出现在DOM对象上事件处理函数的里面。
所以onclick=”return fn()”等价于 btn.onclick=function(){ return fn() },而fn()的结果true/false就决定表单是否提交。
总结:事件函数返回值;
如果返回true或者不返回,浏览器执行默认操作;
如果返回false,阻止浏览器默认操作。