DOM操作

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

  • 對(duì)于多行或有嵌套的元素,innerHTML會(huì)獲取從開(kāi)始標(biāo)簽到結(jié)束標(biāo)簽中的所有內(nèi)容,包括子元素標(biāo)簽,返回整個(gè)HTML結(jié)構(gòu);innerText會(huì)獲取從開(kāi)始標(biāo)簽到結(jié)束標(biāo)簽中的所有內(nèi)容,但不包括子元素標(biāo)簽,并把內(nèi)容拼湊在一行;innerHTML是w3c標(biāo)準(zhǔn),innerText只適用于IE瀏覽器。

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

  • 相同點(diǎn):elem.children和elem.childNodes都可以以類數(shù)組的形式返回子元素節(jié)點(diǎn);
  • 區(qū)別1:elem.children返回的類數(shù)組是HTMLCollection,elem.childNodes返回的類數(shù)組是NodeList;
  • 區(qū)別2:elem.children只包含元素節(jié)點(diǎn),elem.childNodes包含元素節(jié)點(diǎn)、文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)等。

題目3:查詢?cè)赜袔追N常見(jiàn)的方法?ES5的元素選擇方法是什么?

  • getElementById 返回匹配指定ID屬性的元素節(jié)點(diǎn)。
  • getElementsByClassName 返回一個(gè)類似數(shù)組的對(duì)象(HTMLCollection類型的對(duì)象),包括了所有class名- 字符合指定條件的元素(搜索范圍包括本身),元素的變化實(shí)時(shí)反映在返回結(jié)果中
  • getElementsByTagName 返回所有指定標(biāo)簽的元素(搜索范圍包括本身)
  • getElementsByName 用于選擇擁有name屬性的HTML元素,比如form、img、frame、embed和object,返回一個(gè)NodeList格式的對(duì)象,不會(huì)實(shí)時(shí)反映元素的變化。
ES5選擇方法:
  • querySelector 返回匹配指定的CSS選擇器的元素節(jié)點(diǎn)。如果有多個(gè)節(jié)點(diǎn)滿足匹配條件,則返回第一個(gè)匹配的節(jié)點(diǎn)。如果沒(méi)有發(fā)現(xiàn)匹配的節(jié)點(diǎn),則返回null。
  • querySelectorAll 返回匹配指定的CSS選擇器的所有節(jié)點(diǎn),返回的是NodeList類型的對(duì)象。NodeList對(duì)象不是動(dòng)態(tài)集合,所以元素節(jié)點(diǎn)的變化無(wú)法實(shí)時(shí)反映在返回結(jié)果中。

題目4:如何創(chuàng)建一個(gè)元素?如何給元素設(shè)置屬性?如何刪除屬性

//創(chuàng)建元素
var divEle = document.createElement("div");

  //設(shè)置刪除屬性
  divEle.setAttribute('myClass', 'myClassVal');

  var myClass = divEle.getAttribute('myClass');
  console.log('myClass', myClass);        //myClass myClassVal

  divEle.removeAttribute('myClass');
  myClass = divEle.getAttribute('myClass');
  console.log('myClass', myClass);        //myClass null

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

var body = document.getElementsByTagName('body')[0];

//把divEle插入到body
var divEle = document.createElement("div");
divEle.innerHTML = 'div的內(nèi)容';
body.appendChild(divEle);

//把pEle插入到divEle中的第一個(gè)子元素
var pEle = document.createElement("p");
pEle.innerHTML = 'p的內(nèi)容--pEle';
divEle.insertBefore(pEle, divEle.firstChild);

//把divEle中的第一個(gè)子元素替換成pEleNew
var pEleNew = document.createElement('p');
pEleNew.innerHTML = 'p的內(nèi)容--pEleNew';
divEle.replaceChild(pEleNew, divEle.firstChild);

//刪除divEle中的第一個(gè)子元素,即pEleNew
divEle.removeChild(divEle.firstChild);

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

element.classList返回屬性的類名,有這么幾個(gè)屬性和方法:

  • 1.length:返回元素類名的個(gè)數(shù),只讀;

  • 2.item():支持一個(gè)參數(shù),為類名的索引,返回對(duì)應(yīng)的類名;

  • 3.add():接受一個(gè)class名字符串作為參數(shù),把該class名添加到元素上,若已存在,則忽略;

  • 4.remove() :接受一個(gè)class名字符串作為參數(shù),把該class從元素上移除;

  • 5.contains():接受一個(gè)class名字符串作為參數(shù),驗(yàn)證元素的class列表中是否包含該class,返回布爾值;

  • 6.toggle():接受2個(gè)參數(shù),第一個(gè)為class名字符串,第二個(gè)為布爾值,如果為true表示添加該class,如果為false則表示移除該class,并返回該Boolean值。

var div = document.createElement('div');
div.setAttribute('class', 'foo bar');
var body = document.getElementsByTagName('body')[0];
body.appendChild(div);

//判斷class中是否包含foo
console.log(div.classList.contains("foo"));    //true

//添加和刪除一個(gè)class
div.classList.add("anotherclass");
div.classList.remove("foo");

題目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>
//方式1:
var liArr = document.getElementsByTagName('li');
console.log(liArr);
var btn = document.getElementsByClassName('btn');
console.log(btn);

//方式2:
liArr = document.querySelectorAll('li');
console.log(liArr);
btn = document.querySelector('.btn');
console.log(btn);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 基本介紹 文檔對(duì)象模型 (DOM) 是HTML和XML文檔的編程接口。它給文檔(結(jié)構(gòu)樹(shù))提供了一個(gè)結(jié)構(gòu)化的表述并且...
    草鞋弟閱讀 579評(píng)論 0 0
  • 題目1: dom對(duì)象的innerText和innerHTML有什么區(qū)別? innerText是一個(gè)可寫屬性,返回元...
    我七閱讀 492評(píng)論 0 0
  • 題目1: dom對(duì)象的innerText和innerHTML有什么區(qū)別? innerText是一個(gè)可寫屬性,返回元...
    QQQQQCY閱讀 279評(píng)論 0 0
  • 題目1: dom對(duì)象的innerText和innerHTML有什么區(qū)別? innerText是一個(gè)可寫屬性,返回元...
    Taaaaaaaurus閱讀 260評(píng)論 0 1
  • 情不知所起,一往而深,癡心幾許? 心不知所往,一夢(mèng)華胥,紅塵何安? —...
    安小安zzz閱讀 50,749評(píng)論 87 121

友情鏈接更多精彩內(nèi)容