關(guān)于while中的執(zhí)行語(yǔ)句的問(wèn)題
這個(gè)x一開(kāi)始被賦值為n這個(gè)節(jié)點(diǎn)緊接著的上一個(gè)節(jié)點(diǎn),然后執(zhí)行while語(yǔ)句,滿足條件x再被賦值為x的前一個(gè)節(jié)點(diǎn)的值,那不就是n這個(gè)節(jié)點(diǎn)的前兩個(gè)了么。有點(diǎn)不能理解。
這個(gè)x一開(kāi)始被賦值為n這個(gè)節(jié)點(diǎn)緊接著的上一個(gè)節(jié)點(diǎn),然后執(zhí)行while語(yǔ)句,滿足條件x再被賦值為x的前一個(gè)節(jié)點(diǎn)的值,那不就是n這個(gè)節(jié)點(diǎn)的前兩個(gè)了么。有點(diǎn)不能理解。
2019-07-07
舉報(bào)
2019-07-08
程序的目標(biāo)很明確,要獲取并返回的x是一個(gè)實(shí)際的節(jié)點(diǎn)元素(比如<li>、<div>等標(biāo)簽),而不能是非IE瀏覽器(比如Firefox、Chrome)中獲取的文本、注釋等其他類型的元素。
所以循環(huán)條件是x.nodeType!=1。其中“1”代表的就是“標(biāo)簽元素”。如果返回的結(jié)果真的是一個(gè)標(biāo)簽元素的話,自然不滿足條件,無(wú)法進(jìn)入循環(huán)。
同理,循環(huán)條件中還有一個(gè)條件是x,等同于x!=null。這是因?yàn)槿绻呀?jīng)是第一個(gè)元素了,它的前一個(gè)sibling是什么?在JS中用null作為返回值。也是同樣的道理,如果x取值已經(jīng)是null(沒(méi)有再前面的sibling)則沒(méi)必要循環(huán)了。