DOM、事件

DOM、事件

問答

1. dom 對象的 innerTextinnerHTML 有什么區(qū)別?

  • innerText,輸出/更改純文本

  • innerHTML,不僅可以輸出/更改純文本,還可以輸出/更改DOM節(jié)點樹

2. elem.childrenelem.childNodes 的區(qū)別?

  • elem.children,輸出父節(jié)點包含的子節(jié)點組成的類數組

  • elem.children,輸出父節(jié)點包含的所有元素(包括空格、換行、文本、子節(jié)點)組成的類數組

3. 查詢元素有幾種常見的方法?

  1. 下面的方法里面的參數都是字符串
  • getElementById()
    通過 id 查找。返回值為單個元素。
  • getElementsByClassName()
    通過 class 查找。返回值為類數組。
  • getElementsByTagName()
    通過 tagname(標簽名字) 查找。返回值為類數組。
  1. 下面的方法通過** CSS 選擇符**查詢:
  • querySelector()
    返回與該模式匹配的第一個元素,如果沒有,返回 null 。
  • querySelectorAll()
    與上類似,返回一個 NodeList 對象(與該模式匹配的所有元素)(類數組),如果沒有,Nodelist 為空。

4. 如何創(chuàng)建一個元素?如何給元素設置屬性?

  1. 創(chuàng)建元素
    document.createElement('Tagname')
  2. 設置屬性
    setAttribute(‘屬性名’, ‘屬性值’)
    tips: 不規(guī)范的屬性名也能夠被設置。

5. 元素的添加、刪除?

  1. 元素添加
    appendChild(要添加的節(jié)點) tips: 在末尾添加
    insertBefore(要插入的節(jié)點, 作為參照的節(jié)點)
  2. 元素刪除
    appendChild(要插入的節(jié)點, 要替換的節(jié)點)
    removeChild(要移除的節(jié)點)

6. DOM0 事件 和 DOM2 級在事件監(jiān)聽使用方式上有什么區(qū)別?

  • DOM0 事件監(jiān)聽器無法處理多個事件(當在同一個元素上再添加一個監(jiān)聽事件時會覆蓋之前的事件方法),DOM2 級事件監(jiān)聽器可以處理多個事件(事件列表)。
  • DOM2 級 (addEventListener()) : 可以選擇在捕獲階段觸發(fā)事件或者在冒泡階段觸發(fā)事件。DOM0 無法選擇。
  • DOM0 不存在兼容性問題,DOM2 在 IE8 之前不支持。( IE 使用attachEvent(‘click’, func) )

7. attachEventaddEventListener 有什么區(qū)別?

  • attachEvent是老版本IE瀏覽器上監(jiān)聽事件的方法,接受兩個參數,第一個參數是事件類型,格式為”on+type”(onclick),第二個參數是事件處理程序函數。事件處理程序只能發(fā)生在冒泡階段。
  • addEventListener是現代大多數逐漸主流瀏覽器(Chrome,firefox,safari)監(jiān)聽事件的方法,接受三個參數,第一個參數時事件類型,格式為”type”(click),第二個參數是事件處理程序函數,第三個參數是布爾值,默認為false(冒泡事件),true為捕獲階段事件。

8. 解釋 IE 事件冒泡和 DOM2 事件傳播機制?

  • IE事件冒泡:事件由觸發(fā)元素所在的具體節(jié)點開始,逐級向上傳播,直至html根節(jié)點。
  • DOM2事件傳播機制:DOM2事件傳播機制屬于DOM事件流(DOM2級事件規(guī)定事件流包括三個階段,事件捕獲階段,處于目標階段,事件冒泡階段,首先發(fā)生的是事件捕獲,為截取事件提供機會,然后是實際目標接收事件,最后是冒泡階段),并且第三個參數可以設置事件觸發(fā)時是捕獲階段或者冒泡階段。

9. 如何阻止事件冒泡?如何阻止默認事件?

  • 阻止事件冒泡:
    • event.stopPropagation()
    • IE: event.cancelBubble=true ( 這里默認為 false )
  • 阻止默認事件:
    • event.preventDefault()
    • IE: event.returnValue = false ( 這里默認為 true )


代碼

1. 要求:

  • 當點擊每一個元素li時控制臺展示該元素的文本內容。不考慮兼容

效果預覽

2. 補全代碼,要求:

  • 當點擊按鈕開頭添加時在 <li> 這里是 </li> 元素前添加一個新元素,內容為用戶輸入的非空字符串;當點擊結尾添加時在 <li> 前端6班 </li> 后添加用戶輸入的非空字符串.
  • 當點擊每一個元素li時控制臺展示該元素的文本內容。

效果預覽

3. 補全代碼,要求:

  • 當鼠標放置在li元素上,會在img-preview里展示當前l(fā)i元素的data-img對應的圖片。

效果預覽

4. 實現如下圖Tab切換的功能

JSBin_代碼地址_方法 1
JSbin_代碼地址_方法 2

5. 實現下圖的模態(tài)框功能

效果預覽

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

相關閱讀更多精彩內容

  • 一、問答 1. dom對象的innerText和innerHTML有什么區(qū)別? innerHTML: 也就是從對象...
    饑人谷_羅偉恩閱讀 695評論 0 2
  • 一、dom對象的innerText和innerHTML有什么區(qū)別? innerHTML返回的是從對象起始位置到終止...
    __Qiao閱讀 479評論 0 0
  • 問答 1、dom對象的innerText和innerHTML有什么區(qū)別? innerText屬性①innerTex...
    鴻鵠飛天閱讀 696評論 0 1
  • dom對象的innerText和innerHTML有什么區(qū)別? innerHTML指的是從對象的起始位置到終止位置...
    coolheadedY閱讀 575評論 0 0
  • 問題 1.dom對象的innerText和innerHTML有什么區(qū)別? innerText: 當使用innerT...
    饑人谷_任磊閱讀 658評論 0 1

友情鏈接更多精彩內容