切記 1怪濉O髌怼猜敢!typeof返回的值是一個字符串5谠!校翔!
出錯的代碼:
<body>
<ul id="uu">
<li>第一個</li>
<li>第二個</li>
<li>第三個</li>
<li>第四個</li>
<li>第五個</li>
</ul>
<script src="common.js"></script>
<script>
//IE8獲取節(jié)點(diǎn)的代碼變成了獲取元素唇撬,獲取元素的返回undefined 所以要有兼容代碼
//以獲取第一和最后一個子元素為例
//獲取任意父元素的第一個子元素
function getFirstElementChildByParent(element) {
if (typeof element.firstElementChild != undefined) {
//切記typeof返回的是字符串,所以我之前undefined沒加引號展融,一直有問題,因?yàn)?undefined"!=undefined肯定是正確的
return element.firstElementChild;
} else {
// return element.firstChild;
//本來針對ie8這樣就夠了告希,但為了更嚴(yán)謹(jǐn)扑浸,比如有瀏覽器不識別firstElementChild,識別firstChild燕偶,但返回的又確實(shí)是第一個子節(jié)點(diǎn)
var node = element.firstChild;
while (node && node.nodeType != 1) {
node = node.nextSibling;
}
return node;
}
}
console.log(getFirstElementChildByParent(my$("uu")));
</script>
此段代碼為獲取子元素的兼容代碼喝噪,本來判斷一個屬性是否在瀏覽器中支持,是看它的類型是否是undefined指么,所以我寫了
typeof element.firstElementChild != undefined酝惧,但發(fā)現(xiàn)不支持的ie8也返回了true,難道undefined !=undefined不是false嗎伯诬?晚唇?然后去找了半天,也沒解決盗似,結(jié)果最后才發(fā)現(xiàn)typeof返回的數(shù)據(jù)類型的值是一個字符串傲ㄉ隆!赫舒!此時"undefined"!=undefined肯定一直是true悍及,這才恍然大悟。
所以正確的代碼應(yīng)為:typeof element.firstElementChild != "undefined"