javascript - 事件的定义有无函数的区别
问题描述

<!doctype html><html lang='en'><head> <meta charset='UTF-8'> <title>跨游览器封装函数</title></head><body> <h1 onclick='alert(’这是html事件绑定方式1’)'>html事件绑定方式1</h1> <h1 onclick='f1()'>html事件绑定方式2</h1> <h2 onclick='f1()'>dom0级事件绑定方式</h2> <script type='text/javascript'>function f1(){ alert(’这是html事件绑定方式2’);}var h2 = document.getElementsByTagName(’h2’);console.log(h2[0]);h2[0].onclick = function(){ alert(’这是dom0级事件绑定方式’);}h2[0].onclick = 'alert(’这是dom0级事件绑定方式’)'; </script> </body></html>
问题解答
回答1:1.首先h2[0].onclick = 'alert(’这是dom0级事件绑定方式’)';这个写法你仔细看下就知道是什么意思了!相当于把'alert(’这是dom0级事件绑定方式’)'当成一串字符串赋值给onclick,只是一串字符串,无法起效的!2.然后,<h1 onclick='alert(’这是html事件绑定方式1’)'>html事件绑定方式1</h1>,这个写法,在html标签这里绑定的,onclick后面跟着的alert(’这是html事件绑定方式1’),这部分就是函数的内容,就是你点击了,触发了事件,就执行的内容。跟<h1 onclick='(function(){alert(’这是html事件绑定方式1’)})()'>html事件绑定方式1</h1>这个写法是等价的,看了这个写法就知道是怎么回事了!就是相当于,定义了一个自动执行的匿名函数,而函数执行的内容,就是你写的alert(’这是html事件绑定方式1’)。3.最后,这个就不多解释了,这个是原理就是点击后出发的事件,执行函数而已!
h2[0].onclick = function(){ alert(’这是dom0级事件绑定方式’);}回答2:
第一个行内定义的是DOM元素的attribute,下面访问DOM.onclick可以看作是访问的property。
<a onclick='alert(’abc’)'>test</a><script>var a = document.querySelector(’#test’);console.log(a.onclick); // function onclick(event) { alert(’abc’); }a.attributes[’onclick’].value = ’alert(’test’)’;console.log(a.onclick); // function onclick(event) { alert(’test’); }</script>
相关文章:
1. 为什么span的color非要内联样式才起作用?2. javascript - swiper.js嵌套了swiper 初始设置不能向下一个滑动 结束后重新初始3. angular.js - angular-ui-bootstrap 报错无法使用?4. python - 如何修改twisted自带的日志输出格式?5. docker - 如何修改运行中容器的配置6. 高并发写入和更新mysql7. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?8. 老师,请问我打开browsersync出现这个问题怎么解决啊?9. 请问一下各位老鸟 我一直在学习独孤九贱 现在是在tp5 今天发现 这个系列视频没有实战10. 在cmd下进入mysql数据库,可以输入中文,但是查看表信息,不显示中文,是怎么回事,怎新手,请老师

网公网安备