DOM

題目1: dom對象的innerText和innerHTML有什么區(qū)別?

  • innerText是一個可寫屬性,返回元素內包含的文本內容,在多層次的時候會按照元素由淺到深的順序拼接其內容
<div id = 'test'>
    <p>
        123
        <span>456</span>
    </p>
</div>```
console.log(test.innerText) ;//返回123456 
- innerHTML innerHTML屬性作用和innerText類似,但是不是返回元素的文本內容,而是返回元素的HTML結構,在寫入的時候也會自動構建DOM

console.log(test.innerText)
//返回如下
<p>
123
<span>456</span>
</p>```

題目2: elem.children和elem.childNodes的區(qū)別?

  • elem.childNodes
    childNodes:子元素列表(NodeList)標準的,返回指定元素的直接子元素集合,包括HTML屬性,所有屬性,文本(包括空白符)。可以通過nodeType來判斷是哪種類型的節(jié)點,只有當nodeType==1時才是元素節(jié)點,2是屬性節(jié)點,3是文本節(jié)點。
    有時候需要獲取指定元素的第一個HTML子節(jié)點(非屬性/文本節(jié)點),最容易想到的就是firstChild 屬性。代碼中第一個HTML節(jié)點前如果有換行,空格,那么firstChild返回的就不是你想要的了??梢允褂胣odeType來判斷下。
 function getFirst(elem){
     for(var i=0,e;e=elem.childNodes[i++];){
        if(e.nodeType==1)
            return e;
    }      
 }```
- elem.children 
children:子元素列表(HTMLCollection) 
非標準的,它返回指定元素的直接子元素集合。經測試,它只返回HTML節(jié)點,甚至不返回文本節(jié)點。且在所有瀏覽器下表現(xiàn)驚人的一致。和childNodes 一樣,在Firefox下不支持()取集合元素。因此如果想獲取指定元素的第一個HTML節(jié)點,可以使用children[0]來替代上面的 getFirst函數(shù)。需注意children在IE中包含注釋節(jié)點。
##題目3:查詢元素有幾種常見的方法?ES5的元素選擇方法是什么?

- getElementById() 
getElementById方法返回匹配指定ID屬性的元素節(jié)點。如果沒有發(fā)現(xiàn)匹配的節(jié)點,則返回null。這也是獲取一個元素最快的方法
- getElementsByClassName() 
getElementsByClassName方法返回一個類似數(shù)組的對象(HTMLCollection類型的對象),包括了所有class名字符合指定條件的元素(搜索范圍包括本身),元素的變化實時反映在返回結果中。這個方法不僅可以在document對象上調用,也可以在任何元素節(jié)點上調用。
- getElementsByTagName() 
getElementsByTagName方法返回所有指定標簽的元素(搜索范圍包括本身)。返回值是一個HTMLCollection對象,也就是說,搜索結果是一個動態(tài)集合,任何元素的變化都會實時反映在返回的集合中。這個方法不僅可以在document對象上調用,也可以在任何元素節(jié)點上調用。

- getElementsByName() 
getElementsByName方法用于選擇擁有name屬性的HTML元素,比如form、img、frame、embed和object,返回一個NodeList格式的對象,不會實時反映元素的變化。

 -querySelector() 
querySelector方法返回匹配指定的CSS選擇器的元素節(jié)點。如果有多個節(jié)點滿足匹配條件,則返回第一個匹配的節(jié)點。如果沒有發(fā)現(xiàn)匹配的節(jié)點,則返回null。
- querySelectorAll() 
querySelectorAll方法返回匹配指定的CSS選擇器的所有節(jié)點,返回的是NodeList類型的對象。NodeList對象不是動態(tài)集合,所以元素節(jié)點的變化無法實時反映在返回結果中。 
##題目4:如何創(chuàng)建一個元素?如何給元素設置屬性?如何刪除屬性

- createElement() 
createElement方法用來生成HTML元素節(jié)點。

- createTextNode() 
createTextNode方法用來生成文本節(jié)點,參數(shù)為所要生成的文本節(jié)點的內容。
- createDocumentFragment() 
createDocumentFragment方法生成一個DocumentFragment對象。 
DocumentFragment對象是一個存在于內存的DOM片段,但是不屬于當前文檔,常常用來生成較復雜的DOM結構,然后插入當前文檔。這樣做的好處在于,因為DocumentFragment不屬于當前文檔,對它的任何改動,都不會引發(fā)網頁的重新渲染,比直接修改當前文檔的DOM有更好的性能表現(xiàn)。 
##題目5:如何給頁面元素添加子元素?如何刪除頁面元素下的子元素?

- father.appendChild(new); 是在父元素節(jié)點的最后添加。

- insertBefore()在某個元素之前插入元素
- replaceChild()replaceChild()接受兩個參數(shù):要插入的元素和要替換的元素
- 刪除元素使用removeChild()方法即可 
##題目6: element.classList有哪些方法?如何判斷一個元素的 class 列表中是包含某個 class?如何添加一個class?如何刪除一個class? 
方法:
- add( String [, String] ) 
添加指定的類值。如果這些類已經存在于元素的屬性中,那么它們將被忽略。
- remove( String [,String] ) 
刪除指定的類值。
- item ( Number ) 
按集合中的索引返回類值。
- toggle ( String [, force] ) 
當只有一個參數(shù)時:切換 class value; 即如果類存在,則刪除它并返回false,如果不存在,則添加它并返回true。 
當存在第二個參數(shù)時:如果第二個參數(shù)的計算結果為true,則添加指定的類值,如果計算結果為false,則刪除它
- contains( String ) 
檢查元素的類屬性中是否存在指定的類值。

- elem.classList.contains(‘className’)來判斷是否包含某個 class

- elem.classList.add(‘className’) 添加類 
- elem.classList.remove(‘className’) 刪除類 
##題目7: 如何選中如下代碼所有的li元素? 如何選中btn元素?

<div class="mod-tabs">
<ul>
<li>list1</li>
<li>list2</li>
<li>list3</li>
</ul>
<button class="btn">點我</button>
</div>
var div = document.getElementsByClassName('mod-tabs')
var li = div.getElementsByTagName('li')
var btn = div.getElementsByTagName('button')
var li = document.querySelectorAll('.mod-tabs li')
var btn = document.querySelector('.mod-tabs .btn')```

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 基本介紹 文檔對象模型 (DOM) 是HTML和XML文檔的編程接口。它給文檔(結構樹)提供了一個結構化的表述并且...
    草鞋弟閱讀 582評論 0 0
  • 題目1: dom對象的innerText和innerHTML有什么區(qū)別? innerText是一個可寫屬性,返回元...
    Taaaaaaaurus閱讀 262評論 0 1
  • 問題 1.dom對象的innerText和innerHTML有什么區(qū)別? innerText: 當使用innerT...
    饑人谷_任磊閱讀 660評論 0 1
  • 1 這世上那么多笑話, 少我一個也無差, 為何總抓住我不放。 2 每日每夜飲酒, 明明頭昏又頭痛, 卻裝作逍遙快活...
    倫小讓閱讀 352評論 0 1
  • 一月的某天,莫名的被拉進了一個微信群,2000一班。16年前的光陰,就像電影的帷幕突然被打開,一幀幀一幕幕,騎單車...
    welsie閱讀 348評論 0 0

友情鏈接更多精彩內容