DOM操作

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

  • 對于多行或有嵌套的元素亲轨,innerHTML會獲取從開始標簽到結(jié)束標簽中的所有內(nèi)容赁严,包括子元素標簽,返回整個HTML結(jié)構(gòu)高职;innerText會獲取從開始標簽到結(jié)束標簽中的所有內(nèi)容,但不包括子元素標簽辞州,并把內(nèi)容拼湊在一行怔锌;innerHTML是w3c標準,innerText只適用于IE瀏覽器孙技。

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

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

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

  • getElementById 返回匹配指定ID屬性的元素節(jié)點土浸。
  • getElementsByClassName 返回一個類似數(shù)組的對象(HTMLCollection類型的對象),包括了所有class名- 字符合指定條件的元素(搜索范圍包括本身)彭羹,元素的變化實時反映在返回結(jié)果中
  • getElementsByTagName 返回所有指定標簽的元素(搜索范圍包括本身)
  • getElementsByName 用于選擇擁有name屬性的HTML元素黄伊,比如form、img派殷、frame还最、embed和object,返回一個NodeList格式的對象毡惜,不會實時反映元素的變化拓轻。
ES5選擇方法:
  • querySelector 返回匹配指定的CSS選擇器的元素節(jié)點。如果有多個節(jié)點滿足匹配條件经伙,則返回第一個匹配的節(jié)點扶叉。如果沒有發(fā)現(xiàn)匹配的節(jié)點,則返回null帕膜。
  • querySelectorAll 返回匹配指定的CSS選擇器的所有節(jié)點枣氧,返回的是NodeList類型的對象。NodeList對象不是動態(tài)集合垮刹,所以元素節(jié)點的變化無法實時反映在返回結(jié)果中作瞄。

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

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

  //設置刪除屬性
  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:如何給頁面元素添加子元素宗挥?如何刪除頁面元素下的子元素?

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

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

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

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

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

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

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

  • 1.length:返回元素類名的個數(shù)搪桂,只讀透敌;

  • 2.item():支持一個參數(shù),為類名的索引踢械,返回對應的類名酗电;

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

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

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

  • 6.toggle():接受2個參數(shù),第一個為class名字符串埃篓,第二個為布爾值处坪,如果為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

//添加和刪除一個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">點我</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);
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蝎宇,一起剝皮案震驚了整個濱河市膝舅,隨后出現(xiàn)的幾起案子详囤,更是在濱河造成了極大的恐慌十电,老刑警劉巖锄贼,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纲堵,死亡現(xiàn)場離奇詭異雷猪,居然都是意外死亡票从,警方通過查閱死者的電腦和手機吹零,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門罩抗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灿椅,你說我怎么就攤上這事套蒂〕В” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵操刀,是天一觀的道長烁挟。 經(jīng)常有香客問我,道長骨坑,這世上最難降的妖魔是什么撼嗓? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮欢唾,結(jié)果婚禮上且警,老公的妹妹穿的比我還像新娘。我一直安慰自己礁遣,他們只是感情好斑芜,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亡脸,像睡著了一般押搪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浅碾,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天大州,我揣著相機與錄音,去河邊找鬼垂谢。 笑死厦画,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的滥朱。 我是一名探鬼主播根暑,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼徙邻!你這毒婦竟也來了排嫌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤缰犁,失蹤者是張志新(化名)和其女友劉穎淳地,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帅容,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡颇象,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了并徘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遣钳。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖麦乞,靈堂內(nèi)的尸體忽然破棺而出蕴茴,到底是詐尸還是另有隱情劝评,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布荐开,位于F島的核電站付翁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏晃听。R本人自食惡果不足惜百侧,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望能扒。 院中可真熱鬧佣渴,春花似錦、人聲如沸初斑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽见秤。三九已至砂竖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹃答,已是汗流浹背乎澄。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留测摔,地道東北人置济。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像锋八,于是被迫代替她去往敵國和親浙于。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

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

  • 基本介紹 文檔對象模型 (DOM) 是HTML和XML文檔的編程接口挟纱。它給文檔(結(jié)構(gòu)樹)提供了一個結(jié)構(gòu)化的表述并且...
    草鞋弟閱讀 429評論 0 0
  • 題目1: dom對象的innerText和innerHTML有什么區(qū)別羞酗? innerText是一個可寫屬性,返回元...
    我七閱讀 415評論 0 0
  • 題目1: dom對象的innerText和innerHTML有什么區(qū)別紊服? innerText是一個可寫屬性檀轨,返回元...
    QQQQQCY閱讀 182評論 0 0
  • 題目1: dom對象的innerText和innerHTML有什么區(qū)別? innerText是一個可寫屬性围苫,返回元...
    Taaaaaaaurus閱讀 199評論 0 1
  • 情不知所起剂府,一往而深,癡心幾許剃盾? 心不知所往腺占,一夢華胥淤袜,紅塵何安? —...
    安小安zzz閱讀 50,605評論 87 121