1. 程式人生 > >JavaScript 事件對內存和性能的影響

JavaScript 事件對內存和性能的影響

img child use val 是否 otc als 字符串轉換 oot

技術分享圖片

程序代碼:

技術分享圖片
<%--
  Created by IntelliJ IDEA.
  User: 喬克叔叔
  Date: 2017/12/26
  Time: 16:45
  To change this template use File | Settings | File Templates.
--%>
<!--測試事件綁定  JavaScript 事件對內存和性能的影響-->
<!--event.target 屬性返回哪個 DOM 元素觸發了事件。-->
<%@ page contentType="text/html;charset=UTF-8
" language="java" %> <html> <head> <title>Title</title> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script> <script type="text/javascript"> $(function () { // 方法一 var list1=document.getElementById(
"list-1"); list1.addEventListener("click",function () { alert(this.firstChild.nodeValue); }); var list2=document.getElementById("list-2"); list2.addEventListener("click",function () { alert(this.firstChild.nodeValue); });
var list3=document.getElementById("list-3"); list3.addEventListener("click",function () { alert(this.firstChild.nodeValue); }); var list4=document.getElementById("list-4"); list4.addEventListener("click",function () { alert(this.firstChild.nodeValue); }); var list5=document.getElementById("list-5"); list5.addEventListener("click",function () { alert(this.firstChild.nodeValue); }); //方法二 var parent=document.getElementById("parent-listB"); parent.addEventListener("click",function (event) { var target=event.target; console.log(target);//target就是被點擊的目標 的所有內容 //console.log(target.nodeName);//LI //console.log(target.nodeValue);//null //console.log(target.nodeType);//1 if(target.nodeName.toLowerCase()=="li"){//toLowerCase()轉為小寫 判斷是否點中了li //如果點中了li 那麽就把該目標li的文本彈出 alert(target.firstChild.nodeValue); } }); //第三種 使用switch語句 var p=document.getElementById("parent-listC"); p.addEventListener("click",function (event) { var target= event.target; if(target.nodeName.toLowerCase()==="li"){ switch (target.id){ case "a": alert("我是A"); break; case "b": alert("我是B"); break; case "c": alert("我是C"); break; case "d": alert("我是D"); break; default: break; } } }); //移除事件處理程序 var but=document.getElementById("but"); but.addEventListener("click",function (event) { var target=event.target; //alert(target.nodeName); //button //alert(target.nodeValue);//null //alert(target.nodeType);//1 alert("觸發事件,記得把時間移除哦"); but.onclick=null;//移除事件處理程序 but.firstChild.nodeValue="提交中。。。" }) }) </script> </head> <body> <ul id="parent-listA"> <li id="list-1">List 1</li> <li id="list-2">List 2</li> <li id="list-3">List 3</li> <li id="list-4">List 4</li> <li id="list-5">List 5</li> </ul> ------------------------------------------ <ul id="parent-listB"> <li id="list-a">List a</li> <li id="list-b">List b</li> <li id="list-c">List c</li> <li id="list-d">List d</li> <li id="list-e">List e</li> </ul> ------------------------------------------ <ul id="parent-listC"> <li id="a">List a</li> <li id="b">List b</li> <li id="c">List c</li> <li id="d">List d</li> </ul> ---------------------------- <br> <button id="but">提交</button> </body> </html>
View Code

技術分享圖片

技術分享圖片

參考文章:http://www.codeceo.com/article/javascript-event-optimization.html

對以上的練習 做如下補充:

一:

技術分享圖片

火狐控制臺打印:

技術分享圖片

技術分享圖片

二:JavaScript裏面三個等號和兩個等號的區別

參考文章:https://www.cnblogs.com/litsword/archive/2010/07/22/1782933.html

先說 ===,這個比較簡單。下面的規則用來判斷兩個值是否===相等:
1、如果類型不同,就[不相等]
2、如果兩個都是數值,並且是同一個值,那麽[相等];(!例外)的是,如果其中至少一個是NaN,那麽[不相等]。(判斷一個值是否是NaN,只能用isNaN()來判斷)
3、如果兩個都是字符串,每個位置的字符都一樣,那麽[相等];否則[不相等]。
4、如果兩個值都是true,或者都是false,那麽[相等]。
5、如果兩個值都引用同一個對象或函數,那麽[相等];否則[不相等]。
6、如果兩個值都是null,或者都是undefined,那麽[相等]。
再說 ==,根據以下規則:
1、如果兩個值類型相同,進行 === 比較。
2、如果兩個值類型不同,他們可能相等。根據下面規則進行類型轉換再比較:
a、如果一個是null、一個是undefined,那麽[相等]。
b、如果一個是字符串,一個是數值,把字符串轉換成數值再進行比較。
c、如果任一值是 true,把它轉換成 1 再比較;如果任一值是 false,把它轉換成 0 再比較。

JavaScript 事件對內存和性能的影響