js dom選擇器

dom選擇器磷籍。

我們知道document表示文檔怔蚌,我們就是通過document里面的方法選擇標(biāo)簽琼娘。

1:document.getElementById();

通過選擇Id選擇器预侯,來選擇標(biāo)簽绽左。

 <div id="demo">123 </div>        <div > 456</div>        <script type='text/javascript'>        var div=document.getElementById('demo');        </script>

image.png

目標(biāo)很明確,選擇了id='demo'的div

注意:元素在ie8以下的選擇器履怯,不區(qū)分id的大小寫回还,而且也能匹配name屬性的元素(也就是如果有name='demo')那么也會被匹配。

2:document.getElementsByTagName()

通過標(biāo)簽名來選擇標(biāo)簽叹洲。

 <div id="demo">123 </div>
        <div > 456</div>
        <span>
            <em></em>
        </span>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('div');
        </script>


image.png

直接可以把所有的div標(biāo)簽全部選擇出來柠硕。這里注意我們返回的是一個類數(shù)組名,我們可以像數(shù)組一樣調(diào)用每一個div

我們應(yīng)該注意到這樣帶getElements的s的就是把一類都選出來运提,注意返回的是類數(shù)組蝗柔。

這個很常用。

3:document.getElementsByName()

通過name屬性來選擇標(biāo)簽民泵。

 <div id="demo">123 </div>
        <div name='cyl'> 456</div>
        <span>
            <em></em>
        </span>
        <script type='text/javascript'>
        var div=document.getElementsByName('cyl');
        </script>

image.png

這個方法對表單癣丧,img,iframe比較好,其他的你想想栈妆,你給加一個name干嘛了胁编。

4:document.getElementsByClassName()

通過Class選擇器來選擇標(biāo)簽。

<div class="demo">123 </div>
        <div name='cyl'> 456</div>
        <span>
            <em></em>
        </span>
        <script type='text/javascript'>
        var div=document.getElementsByClassName('demo');
        </script>

image.png

注意ie8和ie8以下的沒有這個方法鳞尔。

以上的幾種方法都是實時性的嬉橙,也就是標(biāo)簽變了,那么選擇器選擇的標(biāo)簽也會馬上改變铅檩。舉個栗子

<div class="demo">123 </div>
<div id='cyl'> 456</div>
<span>
<em></em>
</span>
<script type='text/javascript'>
var div1=document.getElementsByTagName('div');
var div2=document.getElementById('cyl');
</script>

我們通過標(biāo)簽名選擇到了倆個選擇器憎夷,通過id選擇器選擇到了一個選擇器莽鸿。

我們?nèi)缦虏僮?


image.png

我們把div2去掉(remove)昧旨,那么div1里面也沒有了。嘻嘻現(xiàn)在理解實時性了吧祥得。

下面?zhèn)z種沒有實時性的標(biāo)簽兔沃,功能很強(qiáng)大,但是沒有實時性就很尷尬了级及,就沒有那么厲害了乒疏,不常用。

看如下代碼

  <div>
            <strong>123</strong>
        </div>
        <div>
            <span>
                <strong>456</strong>
            </span>
        </div>

我們要選擇下面一個strong標(biāo)簽怎么辦饮焦?

1:document.querySelector();

可以讓我們像css一樣怕吴,選擇標(biāo)簽窍侧。


image.png

就這樣輕易的選擇到了。

2:document.querySelectorAll()

和上面一樣,但是選擇所有的返回的是類數(shù)組


image.png

ie7以下的瀏覽器沒有這兩種方法转绷。

因為沒有實時性的緣故伟件,應(yīng)用并不好。

被選擇出來的標(biāo)簽议经,里面上有很多方法和屬性斧账,下面來介紹一下。

節(jié)點遍歷樹.

1:childNode

返回的是當(dāng)前標(biāo)簽的父親節(jié)點煞肾。

<body>
        <div>
            <strong></strong>
            <em></em>
            <span></span>
        </div>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('strong');
        </script>

image.png

看的很清楚了吧咧织,一層一層的直到document

2:childNodes

孩子節(jié)點們(注意是直系的)

<div>
            <strong></strong>
            <em></em>
            <span></span>
        </div>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('div');
        </script>

你們猜一下,div有幾個孩子節(jié)點籍救。是不是三個跋熬睢?


image.png

image.png

這里的節(jié)點注意不只是css的節(jié)點蝙昙,還有html的節(jié)點毯炮。

節(jié)點類型:文本節(jié)點,屬性節(jié)點耸黑,元素節(jié)點桃煎,注釋節(jié)點,document,documentFragment

我們注意到:比如<div>和<strong>之間有“空格”這個是文本節(jié)點咯大刊,在html里面可是分隔符咯为迈。

是不是加了四個文本節(jié)點。


image.png

3:firstChild

第一個兒子節(jié)點

 <div>
            123
            <strong></strong>
            <em></em>
            <span></span>
        </div>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('div');
        </script>

div的第一個兒子節(jié)點是撒缺菌?


image.png

3:lastChild

最后一個兒子節(jié)點葫辐,
4:nextSibling下一個兄弟節(jié)點,perviousSibling上一個兄弟節(jié)點

 <div>
            <strong></strong>
            <em></em>
            <span></span>
        </div>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('strong');
        </script>

1:parentElement

直接父母元素節(jié)點

  <div>
            <strong></strong>
            <em></em>
            <span></span>
        </div>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('strong');
        </script>

2:children

直接孩子元素節(jié)點

 <div>
            <strong></strong>
            <em></em>
            <span></span>
        </div>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('div');
        </script>

3:firstElementChild||lastElementChild

返回第一個||最后一個元素節(jié)點

4:nextElementSibling||perviousElementSibling

下一個||上一個兄弟元素節(jié)點
節(jié)點的四屬性

1:nodeName(元素的標(biāo)簽名伴郁,只可以讀)

 <div>
            <strong></strong>
            <em></em>
            <span></span>
        </div>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('div');
        </script>

2:nodeValue(只有Text節(jié)點和Comment節(jié)點(注釋節(jié)點)有耿战,可以寫)


image.png

3:nodeType(節(jié)點的類型)

通過返回值來確定節(jié)點類型

元素節(jié)點返回1 屬性節(jié)點返回2 文本節(jié)點返回3 注釋節(jié)點返回8 document返回9

documentFragment返回11


image.png

我們封裝一個函數(shù)來把一個節(jié)點樹中的元素節(jié)點都保存下來。

 <div>
            <span></span>
            <em></em>
            <strong></strong>
        </div>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('div');
        function returnElements(target) {
            var arr=[];
            var child=target.childNodes;
            var len=child.length;
            for (var i=0;i<len;i++) {
                if (child[i].nodeType==1) arr.push(child[i]);
            }
            return arr;
        }
        console.log(returnElements(div[0]));
        </script>

4:attributes(元素節(jié)點屬性的集合)


image.png

mo'和id='cyl'

 <div class="demo" id="cyl"></div>
        <script type='text/javascript'>
        var div=document.getElementsByTagName('div');
        </script>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末焊傅,一起剝皮案震驚了整個濱河市剂陡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狐胎,老刑警劉巖鸭栖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異握巢,居然都是意外死亡晕鹊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溅话,“玉大人晓锻,你說我怎么就攤上這事》杉福” “怎么了带射?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長循狰。 經(jīng)常有香客問我窟社,道長,這世上最難降的妖魔是什么绪钥? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任灿里,我火速辦了婚禮,結(jié)果婚禮上程腹,老公的妹妹穿的比我還像新娘匣吊。我一直安慰自己,他們只是感情好寸潦,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布色鸳。 她就那樣靜靜地躺著,像睡著了一般见转。 火紅的嫁衣襯著肌膚如雪命雀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天斩箫,我揣著相機(jī)與錄音吏砂,去河邊找鬼。 笑死乘客,一個胖子當(dāng)著我的面吹牛狐血,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播易核,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼匈织,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了牡直?” 一聲冷哼從身側(cè)響起缀匕,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤渔扎,失蹤者是張志新(化名)和其女友劉穎专缠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡花竞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片约急。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡零远,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厌蔽,到底是詐尸還是另有隱情牵辣,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布奴饮,位于F島的核電站纬向,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏戴卜。R本人自食惡果不足惜逾条,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望投剥。 院中可真熱鬧师脂,春花似錦、人聲如沸江锨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啄育。三九已至酌心,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挑豌,已是汗流浹背谒府。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留浮毯,地道東北人完疫。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像债蓝,于是被迫代替她去往敵國和親壳鹤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • dom選擇器。 我們知道document表示文檔啊鸭,我們就是通過document里面的方法選擇標(biāo)簽锹淌。 1:docum...
    小老虎丶冷心閱讀 644評論 0 0
  • ??DOM(文檔對象模型)是針對 HTML 和 XML 文檔的一個 API(應(yīng)用程序編程接口)赂摆。 ??DOM 描繪...
    霜天曉閱讀 3,623評論 0 7
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,450評論 1 45
  • 一烟号、概述 document節(jié)點是整個文檔樹的頂層節(jié)點绊谭,每張網(wǎng)頁都有自己的document節(jié)點。window.doc...
    周花花啊閱讀 1,319評論 0 1
  • 概述 document節(jié)點是文檔的根節(jié)點汪拥,每張網(wǎng)頁都有自己的document節(jié)點达传。window.document屬...
    許先生__閱讀 628評論 0 2