原生js元素歷遍

2022-03-25 04:27:53 字數 2305 閱讀 2035

父元素:

parentnode;(沒有相容性問題);

offsetparent; (獲取的是首個獲得(絕對定位或者相對定位)的 元素;最終會找到html;)

子元素:

1、childnodes 屬性。

標準的,它返回指定元素的子元素集合,包括html節點,所有屬性 文字。可以通過nodetype來判斷是哪種型別的節點,只有當nodetype==1時才是元素  節點,2是屬性節點,3是文字節點。   node.childnodes[0]  完全等價於  node.firstchild

2、children 屬性

非標準的,它返回指定元素的子元素集合。經測試,它只返回html節點,甚至不返回文字節點。且在所有瀏覽器下表現驚人的一致。和childnodes 一樣,在firefox下不支援()取集合元素。因此如果想獲取指定元素的第乙個html節點,可以使用children[0]來替代上面的getfirst函式。需注意children在ie中包含注釋節點。

第乙個子元素:

1. 有時候需要獲取指定元素的第乙個html子節點(非屬性/文字節點),最容易想到的就是firstchild屬性。**中第乙個html節點前如果有換行,空格,那麼firstchild返回的就不是你想要的了。可以使用nodetype來判斷下。

function getfirst(elem)      

}

2. 可以使用children[0]來替代上面的getfirst函式。

3.或者利用相容的寫法:

//ie

'red';

//ff

'red';

var ofirst=obj.firstelementchild || obj.firstchild;

最後乙個子元素:

1. 模仿getfirst

function getlast(elem)      

}

2. 可以使用children[len-1]

來代替lastfirst

3.或者利用相容的寫法:

var olast=obj.lastelementchild || obj.lastchild;

上乙個元素:

function prev(elem)while(elem && elem.nodetype != 1);

return elem;

}

或者:var  oprev=obj.previouselementsibling ||obj.previoussibling ;

(previoussibling

: ie將跳過在節點之間產生的空格文件節點(如:換行字元),而mozilla不會這樣——ff會把諸如空格換行之類的排版元素視作節點讀取,因此,在ie中用previoussibling

便可讀取到的上乙個節點元素,在ff中就需要這樣寫:previouselementsibling了。)

下乙個元素:

function next(elem)while(elem && elem.nodetype != 1);

return elem;

}

或者:var onext =obj.nextelementsibling ||obj.nextsibling;  (ie8以下有bug)

(nextsibling

: ie將跳過在節點之間產生的空格文件節點(如:換行字元),而mozilla不會這樣——ff會把諸如空格換行之類的排版元素視作節點讀取,因此,在ie中用nextsibling便可讀取到的下乙個節點元素,在ff中就需要這樣寫:nextelementsibling了。)

刪除乙個元素

obj.parentnode.removechild(obj)

插入到目標元素的前面:

function insertafter(newchild,refchild)else

python walk歷遍目錄

import osimport fnmatch defis file match filename,patterns for pattern in patterns iffnmatch.fnmatch filename,pattern return true return false def fin...

原生JS查詢元素

今天寫了乙個很簡單 很粗暴的通過js根據類來查詢dom元素。為了降低它的粗暴等級 耗費效能 我給了三個等級。首先效能最好的,適合ff,ch,ie8,通過queryselectorall這個api。其次是指定id 最後只能全頁面進行匹配class,不過比較節省的效能的是,在指定class名稱的時候,同...

用enumerate進行索引和元素的歷遍

help enumerate class enumerate object enumerate iterable start iterator for index,value of iterable return an enumerate object.iterable must be anothe...