進(jìn)階8:DOM操作

1.dom對(duì)象的innerText和innerHTML有什么區(qū)別?

  • innerText是一個(gè)可寫屬性奸腺,返回元素內(nèi)包含的文本內(nèi)容砍濒,在多層次的時(shí)候會(huì)按照元素由淺到深的順序拼接其內(nèi)容
  • innerHTML屬性作用和innerText類似,但是不是返回元素的文本內(nèi)容邀桑,而是返回元素的HTML結(jié)構(gòu)祟蚀,在寫入的時(shí)候也會(huì)自動(dòng)構(gòu)建DOM
    示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DOM</title>
</head>
<body>
    <div id="ct">
        <p>
            123
            <span>456</span>
        </p>
    </div>

    <script>
        var elem = document.getElementById('ct');
        console.log(elem.innerText)   //123 456
        console.log(elem.innerHTML)  //<p>123<span>456</span></p>
    </script>
</body>
</html>

2.elem.children和elem.childNodes的區(qū)別工窍?

  • elem.children返回元素中的元素子節(jié)點(diǎn);
  • elem.childNodes返回元素中的所有子節(jié)點(diǎn)(包括空白文本節(jié)點(diǎn))前酿,childNodes中保存著一個(gè)NodeList類數(shù)組對(duì)象(有l(wèi)ength屬性但并不是Array的實(shí)例)患雏,可通過方括號(hào)語法來訪問NodeList的值。


3.查詢?cè)赜袔追N常見的方法罢维?ES5的元素選擇方法是什么?

  • getElementById()
    getElementById方法返回匹配指定ID屬性的元素節(jié)點(diǎn)淹仑。如果沒有發(fā)現(xiàn)匹配的節(jié)點(diǎn),則返回null肺孵。這也是獲取一個(gè)元素最快的方法.
    var elem = document.getElementById("ct");

  • getElementsByClassName()
    etElementsByClassName方法返回一個(gè)類似數(shù)組的對(duì)象(HTMLCollection類型的對(duì)象)匀借,包括了所有class名字符合指定條件的元素(搜索范圍包括本身),元素的變化實(shí)時(shí)反映在返回結(jié)果中平窘。這個(gè)方法不僅可以在document對(duì)象上調(diào)用吓肋,也可以在任何元素節(jié)點(diǎn)上調(diào)用。
    var elements = document.getElementsByClassName("num");

  • getElementsByTagName()
    getElementsByTagName方法返回所有指定標(biāo)簽的元素(搜索范圍包括本身)瑰艘。返回值是一個(gè)HTMLCollection對(duì)象是鬼,也就是說,搜索結(jié)果是一個(gè)動(dòng)態(tài)集合紫新,任何元素的變化都會(huì)實(shí)時(shí)反映在返回的集合中均蜜。這個(gè)方法不僅可以在document對(duì)象上調(diào)用,也可以在任何元素節(jié)點(diǎn)上調(diào)用芒率。
    var paras = document.getElementsByTagName("p");

  • getElementsByName()
    getElementsByName方法用于選擇擁有name屬性的HTML元素兆龙,比如form、img敲董、frame、embed和object慰安,返回一個(gè)NodeList格式的對(duì)象腋寨,不會(huì)實(shí)時(shí)反映元素的變化。
    var imgs = document.getElementsByName("image");

ES5的元素選擇方法:

  • querySelector()
    querySelector方法返回匹配指定的CSS選擇器的元素節(jié)點(diǎn)化焕。如果有多個(gè)節(jié)點(diǎn)滿足匹配條件萄窜,則返回第一個(gè)匹配的節(jié)點(diǎn)。如果沒有發(fā)現(xiàn)匹配的節(jié)點(diǎn),則返回null查刻。querySelector方法無法選中CSS偽元素键兜。

  • querySelectorAll()
    querySelectorAll方法返回匹配指定的CSS選擇器的所有節(jié)點(diǎn),返回的是NodeList類型的對(duì)象穗泵。NodeList對(duì)象不是動(dòng)態(tài)集合普气,所以元素節(jié)點(diǎn)的變化無法實(shí)時(shí)反映在返回結(jié)果中。



    querySelectorAll方法的參數(shù)佃延,可以是逗號(hào)分隔的多個(gè)CSS選擇器现诀,返回所有匹配其中一個(gè)選擇器的元素。


4.如何創(chuàng)建一個(gè)元素履肃?如何給元素設(shè)置屬性仔沿?如何刪除屬性?

創(chuàng)建:

  • 創(chuàng)建元素:creatElement(tagName):用來生成HTML元素節(jié)點(diǎn),參數(shù)為引號(hào)包裹的元素的標(biāo)簽名尺棋。
var newDiv = document.createElement("div");
  • 創(chuàng)建文本節(jié)點(diǎn):creatTextNode(content):用來生成文本節(jié)點(diǎn)封锉,參數(shù)為所要生成的文本節(jié)點(diǎn)的內(nèi)容。
var newDiv = document.createElement("div");
var newContent = document.createTextNode("Hello");
  • 創(chuàng)建DOM片段:creatDocumentFragment():生成一個(gè)DocumentFragment對(duì)象膘螟。該對(duì)象是一個(gè)存在于內(nèi)存的DOM片段成福,不屬于當(dāng)前文檔,常用來生成較復(fù)雜的DOM結(jié)構(gòu)萍鲸,然后插入當(dāng)前文檔闷叉。這樣做的好處在于,因?yàn)镈ocumentFragment不屬于當(dāng)前文檔脊阴,對(duì)它的任何改動(dòng)握侧,都不會(huì)引發(fā)網(wǎng)頁(yè)的重新渲染,比直接修改當(dāng)前文檔的DOM有更好的性能表現(xiàn)嘿期。
var docFragment = document.createDocumentFragment();

設(shè)置屬性:

  • setAttribute(attr,value):接收兩個(gè)參數(shù)品擎,引號(hào)包裹的屬性名與引號(hào)包裹的屬性值
var node = document.getElementById("div1");
node.setAttribute("my_attrib", "newVal");

等同于

var node = document.getElementById("div1");
var a = document.createAttribute("my_attrib");
a.value = "newVal";
node.setAttributeNode(a);

刪除屬性:

removeAttribute(attr):接收一個(gè)參數(shù),即要?jiǎng)h除的屬性名

node.removeAttribute('id');

示例:


5.如何給頁(yè)面元素添加子元素备徐?如何刪除頁(yè)面元素下的子元素?

  • 添加元素:
    appendChild(): 在元素末尾添加元素
var newDiv = document.createElement("div");
var newContent = document.createTextNode("Hello");
newDiv.appendChild(newContent);
  • 插入元素:
    insertBefore(newchild,refchild):在某個(gè)元素之前插入元素
var newDiv = document.createElement("div");
var newContent = document.createTextNode("Hello");
newDiv.insertBefore(newContent, newDiv.firstChild);
  • 替換元素
    replaceChild(newEle,oldEle)接受兩個(gè)參數(shù):要插入的元素和要替換的元素
newDiv.replaceChild(newElement, oldElement);
  • 刪除元素:
    removeChild()
parentNode.removeChild(childNode);

6.element.classList有哪些方法萄传?如何判斷一個(gè)元素的 class 列表中是包含某個(gè) class?如何添加一個(gè)class蜜猾?如何刪除一個(gè)class?

  • add(class1,class2,…):在元素中添加一個(gè)或多個(gè)類名秀菱。如果指定的類名已存在,則不會(huì)添加蹭睡。存在返回true衍菱,否則返回false。
  • contains(class):返回布爾值肩豁,判斷指定的類名是否存在脊串。
  • item(index):返回類名在元素中的索引值辫呻。索引值從 0 開始,在區(qū)間范圍外則返回null琼锋。
  • remove(class1,class2,…):移除元素中一個(gè)或多個(gè)類名放闺。移除不存在的類名,不會(huì)報(bào)錯(cuò)缕坎。
  • toggle(class,true|false):在元素中切換類名怖侦。第一個(gè)參數(shù)為要在元素中移除的類名,并返回 false念赶。 如果該類名不存在則會(huì)在元素中添加類名础钠,并返回 true。 第二個(gè)是可選參數(shù)叉谜,是個(gè)布爾值用于設(shè)置元素是否強(qiáng)制添加或移除類旗吁,不管該類名是否存在。

7.如何選中如下代碼所有的li元素停局? 如何選中btn元素很钓?

<div class="mod-tabs">
   <ul>
       <li>list1</li>
       <li>list2</li>
       <li>list3</li>
   </ul>
   <button class="btn">點(diǎn)我</button>
</div>
<script>
    var ali = document.querySelectorAll(".mod-tabs li");
    var aBtn = document.querySelector(".mod-tabs .btn") //ES5
//或
    var ali = document.getElementsByClassName("btn");
    var aBtn = document.getElementsByTagName("li")
</script>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市董栽,隨后出現(xiàn)的幾起案子码倦,更是在濱河造成了極大的恐慌,老刑警劉巖锭碳,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袁稽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡擒抛,警方通過查閱死者的電腦和手機(jī)推汽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歧沪,“玉大人歹撒,你說我怎么就攤上這事≌锇” “怎么了暖夭?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)撵孤。 經(jīng)常有香客問我迈着,道長(zhǎng),這世上最難降的妖魔是什么邪码? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任寥假,我火速辦了婚禮,結(jié)果婚禮上霞扬,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好喻圃,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布萤彩。 她就那樣靜靜地躺著,像睡著了一般斧拍。 火紅的嫁衣襯著肌膚如雪雀扶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天肆汹,我揣著相機(jī)與錄音愚墓,去河邊找鬼。 笑死昂勉,一個(gè)胖子當(dāng)著我的面吹牛浪册,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播岗照,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼村象,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了攒至?” 一聲冷哼從身側(cè)響起厚者,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迫吐,沒想到半個(gè)月后库菲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡志膀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年熙宇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梧却。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奇颠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出放航,到底是詐尸還是另有隱情烈拒,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布广鳍,位于F島的核電站荆几,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赊时。R本人自食惡果不足惜吨铸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祖秒。 院中可真熱鬧诞吱,春花似錦舟奠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咙俩,卻和暖如春耿戚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阿趁。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工膜蛔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脖阵。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓皂股,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親独撇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屑墨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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

  • 題目1: dom對(duì)象的innerText和innerHTML有什么區(qū)別? innerText是一個(gè)可寫屬性纷铣,返回元...
    我七閱讀 416評(píng)論 0 0
  • 1. dom對(duì)象的innerText和innerHTML有什么區(qū)別卵史? innerText:獲取元素內(nèi)的的所有文本內(nèi)...
    饑人谷_哈嚕嚕閱讀 245評(píng)論 0 0
  • 1.dom對(duì)象的innerText和innerHTML有什么區(qū)別? innerText是一個(gè)可寫屬性搜立,返回元素內(nèi)包...
    24_Magic閱讀 149評(píng)論 0 1
  • 1: dom對(duì)象的innerText和innerHTML有什么區(qū)別以躯? innerText 屬性可以過濾掉標(biāo)簽,直接...
    曉風(fēng)殘?jiān)?994閱讀 258評(píng)論 0 1
  • 凌晨一點(diǎn)左右,遍體鱗傷的遠(yuǎn)藤坐在滑冰場(chǎng)旁的休息椅子上颠通,付雪妍用棉棒蘸好酒精址晕。 “啊~疼疼疼!”遠(yuǎn)藤叫道顿锰。 “...
    青屏風(fēng)閱讀 283評(píng)論 0 0