這里為什么是(x && x.nodeType!=1) ?
function get_nextSibling(n){
? ? ? ? var x=n.nextSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.nextSibling;
? ? ? ? }
? ? ? ? return x;
? ? }
這里括號里的 && ?x!=1 ? ? ?有必要嗎?為什么?
function get_nextSibling(n){
? ? ? ? var x=n.nextSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.nextSibling;
? ? ? ? }
? ? ? ? return x;
? ? }
這里括號里的 && ?x!=1 ? ? ?有必要嗎?為什么?
2017-08-19
舉報
2017-10-24
操作符之間的優(yōu)先級(高到低):
算術操作符 → 比較操作符 → 邏輯操作符 → "="賦值符號
所以這里并沒有上面所說的x !=1,因為邏輯操作符的優(yōu)先級是低于比較操作符的,也就是先比較在判斷邏輯關系的
2017-09-09
元素節(jié)點nodetype是1 如果不是就跳過 如果是就返回值。
加上x!=1判斷X這個節(jié)點是否存在的意思
2017-08-19
樓上回答是對的
2017-08-19
因為有的瀏覽器不會忽略標簽之間的空白符(瀏覽器的JavaScript解析器會把空白符也當節(jié)點去處理),空白符相當于字符串,字符串(Text)的nodeType類型是3.
加上這個x.nodeType!=1判斷如果nodeType不是元素(Element)的話,就繼續(xù)查找到正確的節(jié)點。
像li標簽這樣換行的話就有些瀏覽器就會認為有空白符存在,所以把這些標簽都挪成1行就沒問題了(但是這樣代碼格式看起來就很難看)。