1 原生js的dom操作
創(chuàng)建節(jié)點(diǎn) ?createElement
移除節(jié)點(diǎn) ?removeChild
替換節(jié)點(diǎn) replaceChild(oldNode,newNode)
插入節(jié)點(diǎn) insertBefore(newNode, refNode)在refNode節(jié)點(diǎn)前添加newNode
添加節(jié)點(diǎn) appendChild(childNode)
高級(jí)選擇器 querySelector(css選擇器)
2、 == 的隱式轉(zhuǎn)換
①、雙等號(hào)兩邊有一個(gè) NaN ?一律返回false
②、雙等號(hào)兩邊有布爾值,將布爾值轉(zhuǎn)換成數(shù)字 false => 0 , true => 1
③、 如果等號(hào)一邊有字符串,另一邊有三種情況
(1) 如果是字符串,則直接比較
(2) 如果是對(duì)象,則先調(diào)用valueOf()方法,如果沒(méi)有則調(diào)用toString()方法
(3) 如果是數(shù)字,則將字符串轉(zhuǎn)換成數(shù)字,然后進(jìn)行比較
(4) 如果是其他,則直接返回false
④ 如果是數(shù)字和對(duì)象比較,則調(diào)用對(duì)象的valueOf() 或者 toString()方法 進(jìn)行比較
⑤ null == undefined
轉(zhuǎn)換對(duì)象是先調(diào)用valueOf()方法,如果返回對(duì)象是對(duì)象本身或者一個(gè)對(duì)象則再調(diào)用toString()方法
但date對(duì)象是個(gè)例外,date對(duì)象默認(rèn)先調(diào)用toString()方法、
eg : ?new Date() + 1? => "Mon Aug 14 2017 15:40:31 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)1" ?返回字符串
3、 對(duì)于運(yùn)算,先用Number()將對(duì)象轉(zhuǎn)換成數(shù)字,然后進(jìn)行計(jì)算
5 * null = 0 ? ? ?因?yàn)?Number(null) ?= 0?
5 * "A" ?= NaN ?因?yàn)?Number("A") = NaN
如果Infinity與0相乘,結(jié)果是NaN
5 / 0 ? 5/null ?==> 結(jié)果是 Infinity
0 / infinity ==> 0
但是 0/0 ?==> 結(jié)果是 NaN
取余的隱式轉(zhuǎn)換規(guī)則
Infinity%Infinity結(jié)果是NaN
a % b ?中 b 是除數(shù), a 是被除數(shù)
被除數(shù)無(wú)窮大, 除數(shù)有限大, 則 NaN
被除數(shù)有限大, 除數(shù)為0, 則NaN
被除數(shù)有限大, 除數(shù)無(wú)限大, 則結(jié)果是被除數(shù)
被除數(shù)是0 , 結(jié)果是0
0 % NaN ==> NaN?
5 - Infinity ?==> -Infinity
console.log(Infinity-Infinity);//NaN
console.log("兩個(gè)數(shù)的差是"+5-5);//NaN
console.log("兩個(gè)數(shù)的差是"+(5-5));//兩個(gè)數(shù)的差是0
4、DOM事件流
DOM事件流分為冒泡型事件流和捕獲型事件流
點(diǎn)擊事件的發(fā)生過(guò)程是 事件捕獲 事件處理 ?事件冒泡
事件捕獲是從windows ——> document ?——> html ——> body ——>目標(biāo)元素
處理事件
事件冒泡是 從目標(biāo)元素——>body——>html——>document——> windows
所以事件會(huì)被觸發(fā)兩次,所以要阻止事件的冒泡
5、為什么要清除浮動(dòng)元素? 怎么清除?