DOM操作

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

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <div id="content">innertest <p>sasaf</p></div>
  <script>
    var elem = document.getElementById('content')
    console.log(elem.innerText)//innertest sasaf
    console.log(elem.innerHTML)//innertest <p>sasaf</p>
  </script>
</body>
</html>


  • innerText是一個可寫屬性,返回元素內包含的文本內容,在多層次的時候會按照元素由淺到深的順序拼接其內容
  • 而innerHTML屬性雖然作用和innerText類似,但是不是返回元素的文本內容,而是返回元素的HTML結構,在寫入的時候也會自動構建DOM

題目2: elem.children和elem.childNodes的區別?


<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <div id="content">熱門游戲<div>我是子節點</div> </div>
  <script>
    var elem = document.getElementById('content')
    console.log(elem.children)// ["熱門游戲" ,<div>我是子節點</div>]
    console.log(elem.childNodes)// ["<div>我是子節點</div>"]
  </script>
</body>
</html>
  • element.children只輸出普通的DOM元素,elem.children 屬于HTMLCollection對象;
  • element.childNodes會輸出所有的子元素,包括文本節點、文字,elem.childNodes 屬于NodeList對象;
  • 最大的區別就是HTMLCollection是元素集合,而NodeList是節點集合(即可以包含元素,也可以包含文本節點,即元素之間的空白或換行也屬于文字節點,注釋也屬于文本節點)

題目3:查詢元素有幾種常見的方法?ES5的元素選擇方法是什么?

函數 功能
getElementById() 指定ID找元素
getElementsByClassName() 指定class找元素
getElementsByTagName() 指定元素標簽找元素
getElementsByName() 指定name屬性找元素
querySelector() ES5支持,參數寫法可按照CSS選擇器,返回單個元素
querySelectorAll() ES5支持,參數寫法可按照CSS選擇器,返回多個元素
elementFromPoint() 指定位置找元素

題目4:如何創建一個元素?如何給元素設置屬性?如何刪除屬性

函數 功能
createElement() 創建HTML元素
createTextNode() 創建文本節點
createAttribute() 創建屬性
setAttribute() 設置屬性
romoveAttribute() 刪除屬性

題目5:如何給頁面元素添加子元素?如何刪除頁面元素下的子元素?

函數 功能
appendChild() 在元素末尾添加元素
insertBefore() 在某個元素之前插入元素
replaceChild() 替換元素
removeChild() 刪除子元素
// <div>
//  <span id="childSpan">foo bar</span>
// </div>

// 創建一個空的span元素節點
// 沒有id,沒有任何屬性和內容
var sp1 = document.createElement("span");

// 添加一個id屬性,值為'newSpan'
sp1.setAttribute("id", "newSpan");

// 創建一個文本節點
var sp1_content = document.createTextNode("新的span元素的內容.");

// 將文本節點插入到span元素中
sp1.appendChild(sp1_content);

// 獲得被替換節點和其父節點的引用.
var sp2 = document.getElementById("childSpan");
var parentDiv = sp2.parentNode;

// 用新的span元素sp1來替換掉sp2
parentDiv.replaceChild(sp1, sp2);

// 結果:
// <div>
//   <span id="newSpan">新的span元素的內容.</span>
// </div>

題目6: element.classList有哪些方法?如何判斷一個元素的 class 列表中是包含某個 class?如何添加一個class?如何刪除一個class?

  1. add( String [, String] )添加指定的類值。如果這些類已經存在于元素的屬性中,那么它們將被忽略。
  2. remove( String [,String] )刪除指定的類值。
  3. item ( Number )按集合中的索引返回類值。
  4. toggle ( String [, force] )當只有一個參數時:切換 class value; 即如果類存在,則刪除它并返回 false,如果不存在,則添加它并返回true。當存在第二個參數時:如果第二個參數的計算結果為true,則添加指定的類值,如果計算結果為false,則刪除它
  5. contains( String )檢查元素的類屬性中是否存在指定的類值。

題目7: 如何選中如下代碼所有的li元素? 如何選中btn元素?

<div class="mod-tabs">
   <ul>
       <li>list1</li>
       <li>list2</li>
       <li>list3</li>
   </ul>
   <button class="btn">點我</button>
</div>
document.getElementsByTagName('li')//選中所有的li元素
document.querySelectorAll('li')//選中所有的li元素
document.getElementsByClassName('btn')//選擇btn元素
document.querySelector('.btn')//選擇btn元素
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 基本介紹 文檔對象模型 (DOM) 是HTML和XML文檔的編程接口。它給文檔(結構樹)提供了一個結構化的表述并且...
    草鞋弟閱讀 475評論 0 0
  • 題目1: dom對象的innerText和innerHTML有什么區別? innerText是一個可寫屬性,返回元...
    QQQQQCY閱讀 202評論 0 0
  • 題目1: dom對象的innerText和innerHTML有什么區別? innerText :返回元素內包含的文...
    saintkl閱讀 209評論 0 0
  • 題目1: dom對象的innerText和innerHTML有什么區別? innerText:是一個可寫屬性,返回...
    Chy18閱讀 202評論 0 0
  • 題目1: dom對象的innerText和innerHTML有什么區別? innerText是一個可寫屬性,返回元...
    Taaaaaaaurus閱讀 215評論 0 1