为什么要用addEventListener方法?

为什么要用addEventListener方法?

这里为什么不直接绑定click时间,然后增加一个匿名函数?

var addSessionStorageBtn = document.getElementById("addSessionStorageBtn");

addSessionStorageBtn.addEventListener("click", function() {

    window.sessionStorage.setItem("site", "http://www.imooc.com");

    window.sessionStorage.setItem("name", "慕课网");

    content.innerHTML = "SessionStorage写入完成";

});


这个和直接绑定有什么区别,这里有什么好处?

sessionStorage是window的一个属性吗?

content的用法是什么?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

1. JavaScript三种绑定事件的方式:

  1. <div id="btn" onclick="clickone()"></div> //直接在DOM里绑定事件
    <script>
     function clickone(){ alert("hello"); }
    </script>
  2. <div id="btn"></div>
    <script>
     document.getElementById("btn").onclick = function(){ alert("hello"); } //脚本里面绑定
    </script>
  3. <div id="btn"></div>
    <script>
     document.getElementById("btn").addeventlistener("click",clickone,false); //通过侦听事件处理相应的函数
     function clickone(){ alert("hello"); }
    </script>

三者的用途:

用 "addeventlistener" 可以绑定多次同一个事件,且都会执行,而在DOM结构如果绑定两个 "onclick" 事件,只会执行第一个;在脚本通过匿名函数的方式绑定的只会执行最后一个事件。  

1. <div id="btn" onclick="clickone()" onclick="clicktwo()"></div> 
    <script>
     function clickone(){ alert("hello"); } //执行这个
     function clicktwo(){ alert("world!"); }
    </script>
  2. <div id="btn"></div>
    <script>
     document.getElementById("btn").onclick = function(){ alert("hello"); }
     document.getElementById("btn").onclick = function(){ alert("world"); } //执行这个
    </script>
  3. <div id="btn"></div>
    <script>
     document.getElementById("btn").addeventlistener("click",clickone,false);
     function clickone(){ alert("hello"); } //先执行
     document.getElementById("btn").addeventlistener("click",clicktwo,false);
     function clicktwo(){ alert("world"); } //后执行
    </script>

2.  sessionStorage一样都是用来存储客户端临时信息的对象。该对象在支持的浏览器中都是以windows对象属性的形式存在的。

3. 从代码关系来看,content 应该是前面获取的元素吧!

希望对你有帮助,祝学习愉快,欢迎采纳。

  • sanly123654 提问者 #1
    我能否再问一下,如果是在DOM里绑定事件,按照属性覆盖的原则,也应该执行第二个才对,为什么是执行第一个呢?
    2017-06-08 21:20:09
  • 小于飞飞 回复 提问者 sanly123654 #2
    你好,这个 js 的相应规定,知道他的执行关系就可以。
    2017-06-09 15:43:51
  • sanly123654 提问者 #3
    非常感谢!
    2017-06-13 10:40:35
小于飞飞 2017-06-09 16:17:22

如图 js 的执行关系。http://img1.sycdn.imooc.com/climg//593a59290001a95106830350.jpg,祝学习愉快。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师