搜尋
首頁web前端html教學JS的Dom與事件小結

JS的Dom與事件小結

Mar 08, 2018 pm 03:08 PM
javascript事件

這次帶給大家JS的Dom與事件小結,JS的Dom與事件小結注意事項有哪些,以下就是實戰案例,一起來看一下。

dom物件的innerText和innerHTML有什麼差別?

innerHTML指的是從物件的起始位置到終止位置的全部內容,包括Html標籤
innerText   指的是從起始位置到終止位置的內容,但它去除Html標籤。

elem.children和elem.childNodes的差別?

Node(節點)是DOM層次結構中的任何類型的物件的通用名稱,Node有很多類型,如元素節點,屬性節點,文字節點,註解節點等。 Element繼承了Node類,也就是說Element是Node多種型別中的一種,也就是當NodeType為1時Node即為ElementNode,另外Element擴充了Node,Element擁有id、class、children等屬性。 children是Element的屬性,childNodes是Node的屬性。

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

常見的獲取元素的方法有3種,分別是透過元素ID、透過標籤名字和透過類別名字來取得。
1.getElementById
DOM提供了一個名為getElementById的方法,這個方法將傳回一個與之對應id屬性的節點物件。
2.getElementsByTagName
該方法傳回一個物件陣列(準確的說是HTMLCollection集合,它不是真正意義上的陣列),每個物件分別對應文件裡有著給定標籤的一個元素。類似於getElementById,同樣,該方法只提供一個參數,它的參數是指定標籤的名字。
3.getElementsByClassName
除了透過指定標籤取得元素外,DOM還提供了getElementsByClassName方法來取得指定class名稱的元素。

如何建立一個元素?如何給元素設定屬性?

1.createElement(name)建立元素節點
createElement()是Document物件中的方法,該方法會根據指定的元素名稱name,傳回Element物件。
2.設定建立元素節點的屬性
建立元素後,我們可能需要設定元素屬性,如:為元素設定CSS樣式、新增點擊事件等。設定元素屬性可以使用Element物件的setAttribute方法,也可以使用屬性名設定。
3.將元素節點插入到DOM文件的指定位置
元素建立後,需要將元素節點插入到DOM文件的指定位置,新增元素使用Element物件的appendChild()方法或insertBefore()方法。 appendChild()
方法的作用是向元素新增新的子節點,被加入的子節點將作為其最後一個子節點。 insertBefore()方法的功能是在現有的節點之前插入新節點,被加入的節點會做為同級節點。

元素的新增、刪除?

元素的新增:使用createElement來新增元素
元素的刪除:若需刪除 HTML 元素,您必須先取得該元素的父元素,然後使用removeChild來刪除對應元素。

DOM0 事件和DOM2級在事件監聽使用方式上有什麼不同?

DOM0事件:DOM0事件是指直接將事件綁定在節點上,一個節點只能綁定一個事件,不然後面的灰覆蓋前面的。
var oBtn = document.querySelctor('#btn');
oBtn.onclick=function(){
console.log('a')
};
DOM2事件:DOM2級事件可以對一個元素綁定多個事件,後面的事件不會覆蓋前面事件;可以透過參數true、false來設定事件在冒泡階段或捕獲階段觸發事件。使用removeEventListener來刪除事件。
oBtn.addEventListener("click",function(){
});
oBtn.removeEventListener("click",fn,false);

attachEvent與addEventListener的差別?

1.addEventListener和attachEvent的相容性問題
addEventListener是符合W3C規範的事件綁定方法,FireFox、Chrome、Safari都是用它來綁定事件。
attachEvent是IE私有的,不符合W3C規範,而且在IE下,只能用它來綁定事件,addEventListener是無效的。
所以,要想綁定事件,必須處理相容性問題。
2.addEventListener和attachEvent的語法規則
addEventListener共有3個參數:element.addEventListener(type,listener,useCapture)
attachEvent共有2個參數:element.attachEvent(type,listener);
3.程式碼相容處理
function regEvent(ele, event_name, fun)
{
if (window.attachEvent)
ele.attachEvent(event_name, fun);  //IE瀏覽器
else
{
event_name = event_name.replace(/^on/, “”);   //如果on開頭,刪除on,如onclick->click
ele. addEventListener(event_name, fun, false);  //非IE瀏覽器
}
}

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

IE事件冒泡:事件發生在觸發元素上,從觸發元素開始,事件向父元素一級一級傳遞,直到html元素
DOM2事件:事件傳播分3階段,捕捉階段,處於事件目標階段,冒泡階段。事件監聽程序只能選擇在捕獲階段或冒泡階段其中的一個階段執行。
捕獲階段:事件發生時,先從根節點開始傳遞,一級一級向下找,知道目標元素。
冒泡階段:從觸發元素開始,事件向父元素一級一級傳遞,直到html元素

如何阻止事件冒泡? 如何阻止預設事件?

阻止事件冒泡:w3c 的方法是 e.stopPropagation(),IE 則是使用 e.cancelBubble = true。
阻止預設事件:w3c 的方法是 e.preventDefault(),IE 則是使用 e.returnValue = false。

問答

有以下程式碼,要求當點擊每個元素li時控制台展示該元素的文字內容。不考慮相容

 <ul class="ct">
      <li>这里是</li>
      <li>饥人谷</li>
      <li>前端6班</li>
  </ul>
  <script>
  //todo ...
  </script>

程式碼:

<ul class="ct">
<li>这里是</li>
<li>饥人谷</li>
<li>前端6班</li>
</ul>
<script>
//方法一
/*var item = document.getElementsByClassName("ct")[0].getElementsByTagName(&#39;li&#39;)
for(var i=0;i<item.length;i++){
item[i].addEventListener(&#39;click&#39;, function(){
console.log(this.innerText);
})
} */
//方法二
var item = document.getElementsByTagName(&#39;li&#39;)
for(var i=0;i<item.length;i++){
item[i].addEventListener(&#39;click&#39;, function(){
console.log(this.innerText);
})
}
</script>

補全程式碼,要求:

1.當點擊按鈕開頭新增時在這裡是< ;/li>元素前面新增一個新元素,內容為使用者輸入的非空字串;點擊結尾加入時在

  • 前端6班
  • 後面新增使用者輸入的非空字串.
    2.點擊每一個元素li時控制台展示該元素的文字內容。

    <ul class="ct">
    <li>这里是</li>
    <li>555</li>
    <li>666</li>
    </ul>
    <input class="ipt-add-content" placeholder="添加内容"/>
    <button id="btn-add-start">开头添加</button>
    <button id="btn-add-end">结尾添加</button>
    <script>
    //todo ...
    </script>

    程式碼:

    <ul class="ct">
    <li>这里是</li>
    <li>666</li>
    <li>555</li>
    </ul>
    <input class="ipt-add-content" placeholder="添加内容"/>
    <button id="btn-add-start">开头添加</button>
    <button id="btn-add-end">结尾添加</button>
    <script>var ct = document.querySelector(&#39;.ct&#39;)var start = document.getElementById(&#39;btn-add-start&#39;);var end = document.getElementById(&#39;btn-add-end&#39;);var input = document.querySelector(".ipt-add-content");
         end.addEventListener(&#39;click&#39;,function(){            var list = document.createElement(&#39;li&#39;);        list.innerText = input.value        ct.appendChild(list);      })      start.addEventListener(&#39;click&#39;,function(){            var list = document.createElement(&#39;li&#39;);        list.innerText = input.value        ct.insertBefore(list,ct.firstChild);      })      ct.addEventListener(&#39;click&#39;, function(e){          if(e.target.tagName.toLowerCase() === &#39;li&#39;){           console.log(e.target.innerText);          }      });     </script>

    補全程式碼,要求:當滑鼠放置在li元素上,會在img-preview裡展示目前li元素的data-img對應的圖片。

     <ul class="ct">
          <li data-img="1.png">鼠标放置查看图片1</li>
          <li data-img="2.png">鼠标放置查看图片2</li>
          <li data-img="3.png">鼠标放置查看图片3</li>
      </ul>
      <div class="img-preview"></div>
      <script>
      //todo ...
      </script>

    程式碼:

    <ul class="ct"><li data-img="http://img5.imgtn.bdimg.com/it/u=3425851328,2681317699&fm=21&gp=0.jpg">鼠标放置查看图片1</li><li data-img="http://pic24.nipic.com/20121003/10754047_140022530392_2.jpg">鼠标放置查看图片2</li><li data-img="http://img2.3lian.com/img2007/4/22/303952037bk.jpg">鼠标放置查看图片3</li></ul><div class="img-preview"></div><script>var ct = document.querySelector(&#39;.ct&#39;)var list = document.getElementsByTagName(&#39;li&#39;)var preview = document.querySelector(&#39;.img-preview&#39;)for(var i=0;i<list.length;i++){list[i].addEventListener(&#39;mouseover&#39;,function(){if(document.querySelector(&#39;img&#39;)){preview.removeChild(document.querySelector(&#39;img&#39;))console.log(1)}var item = document.createElement(&#39;img&#39;)var img = this.getAttribute(&#39;data-img&#39;)preview.appendChild(item)item.src=img;
        })      }    </script>

    相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

    相關閱讀:

    如何使用python來判斷圖片相似度

    用來下載圖片的javascript腳本

    以上是JS的Dom與事件小結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    說明將一致的編碼樣式用於HTML標籤和屬性的重要性。說明將一致的編碼樣式用於HTML標籤和屬性的重要性。May 01, 2025 am 12:01 AM

    一致的HTML編碼風格很重要,因為它提高了代碼的可讀性、可維護性和效率。 1)使用小寫標籤和屬性,2)保持一致的縮進,3)選擇並堅持使用單引號或雙引號,4)避免在項目中混合使用不同風格,5)利用自動化工具如Prettier或ESLint來確保風格的一致性。

    如何在 Bootstrap 4 中實現多項目輪播?如何在 Bootstrap 4 中實現多項目輪播?Apr 30, 2025 pm 03:24 PM

    在Bootstrap4中實現多項目輪播的解決方案在Bootstrap4中實現多項目輪播並不是一件簡單的事情。雖然Bootstrap...

    deepseek官網是如何實現鼠標滾動事件穿透效果的?deepseek官網是如何實現鼠標滾動事件穿透效果的?Apr 30, 2025 pm 03:21 PM

    如何實現鼠標滾動事件穿透效果?在我們瀏覽網頁時,經常會遇到一些特別的交互設計。比如在deepseek官網上,�...

    HTML 視頻的播放控件樣式怎麼修改HTML 視頻的播放控件樣式怎麼修改Apr 30, 2025 pm 03:18 PM

    無法直接通過CSS修改HTML視頻的默認播放控件樣式。 1.使用JavaScript創建自定義控件。 2.通過CSS美化這些控件。 3.考慮兼容性、用戶體驗和性能,使用庫如Video.js或Plyr可簡化過程。

    在手機上使用原生select會帶來哪些問題?在手機上使用原生select會帶來哪些問題?Apr 30, 2025 pm 03:15 PM

    在手機上使用原生select的潛在問題在開發移動端應用時,我們常常會遇到選擇框的需求。通常情況下,開發者傾...

    在手機上使用原生select的弊端是什麼?在手機上使用原生select的弊端是什麼?Apr 30, 2025 pm 03:12 PM

    在手機上使用原生select的弊端是什麼?在移動設備上開發應用時,選擇合適的UI組件是非常重要的。許多開發者�...

    如何使用Three.js和Octree優化房間內第三人稱漫遊的碰撞處理?如何使用Three.js和Octree優化房間內第三人稱漫遊的碰撞處理?Apr 30, 2025 pm 03:09 PM

    使用Three.js和Octree優化房間內第三人稱漫遊的碰撞處理在Three.js中使用Octree實現房間內的第三人稱漫遊並添加碰�...

    在手機上使用原生select會遇到哪些問題?在手機上使用原生select會遇到哪些問題?Apr 30, 2025 pm 03:06 PM

    使用原生select在手機上的問題在移動設備上開發應用時,我們經常會遇到需要用戶進行選擇的場景。雖然原生sel...

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

    Safe Exam Browser

    Safe Exam Browser

    Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

    SublimeText3 Linux新版

    SublimeText3 Linux新版

    SublimeText3 Linux最新版

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    PhpStorm Mac 版本

    PhpStorm Mac 版本

    最新(2018.2.1 )專業的PHP整合開發工具