日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DOM 操作

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DOM 操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面用的代碼

<div id="box" data_a_b="ccc"><ul class="banner"><li></li><li></li><li></li></ul><ul class="number"><li></li><li></li><li></li></ul> </div> <div id="navBar"><ul class="nav"><li></li><li></li><li></li></ul> </div> <div id="content"><ul class="list"><li></li><li></li><li></li></ul> </div> <div id='text'></div> <script>var box = document.getElementById('box')var content = document.getElementById('contet')var banner = document.getElementsByClassName('banner')var li = document.getElementsByTagName('li')var list = document.getElementsByClassName('list')var navBar = document.getElementById('navBar')var nav = document.getElementsByClassName('nav')//childNodes 所有子元素var boxChildNodes = box.childNodes//children 所有子元素var boxChildren = box.children//Array.prototype.slice() 將偽數組變成數組var array = Array.prototype.slice.call(boxChildren,0)//用遍歷將偽數組變成數組var aaa = []for(var i = 0; i < boxChildNodes.length; i++){aaa.push(boxChildNodes[i])}//parentNode 父元素if(banner[0].parentNode === box){console.log('true')}else{console.log('false')}//previousSibling 上一個兄弟元素var previous = boxChildNodes[0].previousSibling//nextSibling 下一個兄弟元素var next = boxChildNodes[4].nextSibling//firstChild 第一個子元素if(boxChildNodes[0] === box.firstChild){console.log('true')}//lastChild 最后一個子元素if(boxChildNodes[boxChildNodes.length-1] === box.lastChild){console.log('true')}//hasChildNodes() 是否有子元素var boxHasChildNodes = box.hasChildNodes()var liHasChildNodes = li[0].hasChildNodes()//ownerDocument 根元素var boxOwner = box.ownerDocument//appendChild() 插入子元素boxChildNodes[1].childNodes[1].appendChild(list[0]) //在 banner 下第一個 li 下最后一個元素后添加 listboxChildNodes[1].appendChild(list[0]) //在 banner 下最后一個元素后添加 listboxChildren[1].appendChild(list[0]) //在 number 下最后一個元素后添加 Listbox.appendChild(list[0]) //在 box 下最后一個元素后添加 list//insertBefore() 在指定元素前插入某元素box.insertBefore(list[0],null) //在 box 下最后一個元素后添加 list 和 appendChild() 方法相同box.insertBefore(list[0],banner[0]) //在 box 下 banner 前添加 listboxChildNodes[1].insertBefore(list[0],banner[0].children[0]) //在 banner 下第一個 li 前添加 listnavBar.childNodes[1].insertBefore(list[0],nav[0].children[2]) //在 nav 下第三個 li 前添加 list//replaceChild() 替換子元素box.replaceChild(list[0],banner[0]) // 把 banner 替換成 listboxChildNodes[1].replaceChild(list[0],banner[0].childNodes[1]) //把 banner 下第一個 li 替換成 list//removeChild() 移除節點box.removeChild(banner[0]) //把 banner 移除掉boxChildNodes[1].removeChild(banner[0].children[0]) //把 banner 下第一個 li 移除掉//getAttribute() 獲取屬性if(box.getAttribute('id') === box.id){console.log('true')}//setAttribute() 設置屬性box.id = 'xxx' 和 box.setAttribute('id','xxx') 效果一樣//createElement() 創建一個元素標簽var p = document.createElement('p')banner[0].insertBefore(p,banner[0].children[1])//createTextNode() 創建文本var hello = document.createTextNode('Hello')var text= document.getElementById('text')text.appendChild(hello)//normalize() 合并文本節點text.normalize()//splitText()text.childNode[0].splitText(5) </script>

Node

  • childNodes獲取到的是父元素下所有的一級子元素,是一個類似數組的對象,例如:boxChildNodes結果是:[ 0:text , 1:ul.banner , 2:text , 3:ul.number , 4:text, length:5],它會獲取到元素和元素之間的空隙(文本),如上面所示的0,2,4。使用Array.prototype.slice(childNode,0)方法,可將偽數組變成數組,或者用遍歷的方法也可以將它變成數組。
  • children和childNodes類似,區別是它不會獲取到文本和文本之間的空隙(文本)。
  • parentNode可以獲取子元素的上一級(父元素)。
  • previousSibling和nextSibling獲取上一個或下一個兄弟元素。
  • firstChild和lastChild獲取父元素下第一個或最后一個子元素(包括空隙,也就是文本)。
  • boxChildNodes的第一個子節點是boxChildNodes[0] === box.firstChild,boxChildNodes[boxChildNodes.length-1] === box.lastChild。
  • hasChildNodes()可以查詢父元素下面是否有子元素(1個或多個),有返回true,沒有返回false,要注意:文本節點也是節點。
  • ownerDocument 查詢一個元素的根元素。
  • appendChild(newNode,oldNode)在父元素上最后一個元素后面添加新的子元素,無法指定添加到某個元素前后。
  • insertBefore(newNode,oldNode)在父元素下某個子元素前添加新的子元素,如果父元素下的某個子元素找不到,則在父元素下最后一個子元素后添加新的子元素和appendChild()方法一樣。
  • removeChild(oldNode)移除父元素下的某節點
  • Document

    <!doctype html> <html><head><title>xx</title><head><body><script>var html = document.documentElement</script></body> </html>
  • document.documentElement 獲得html元素
  • document.body獲得body元素
  • document.head獲得head元素
  • document.doctype獲得doctype的引用
  • document.title獲得title內容
  • document.anchors獲得所有帶name的a標簽
  • document.forms獲得所有form標簽
  • document.links獲得所有帶href的標簽
  • Element

  • nodeTyp===1為標簽,nodeType===3為文本。
  • nodeName和tagName都是返回元素的標簽名,返回的都是大寫,用的時候需要進行大小寫轉換。
  • getAttribute(),setAttribute(),removeAttribute()獲取,設置和刪除元素的屬性,和直接使用box.id效果一樣,區別是get...這類方法是能獲取自定義屬性的。
  • 自定義屬性可以通過dataset訪問
  • createElement()和createTextNode()創建元素標簽和創建文本,需要用appendChild()添加到頁面中去。
  • normalize()和splitText()合并文本節點(在父元素上操作)和分割文本節點(在子元素上操作)

  • <div class="nav"><ul class="leftNav"><li></li><li></li><li></li></ul><ul class="rightNav"><li></li><li></li></ul> </div> <script>var ulId = document.getElementById('leftNav')//querySelector() 返回找到匹配的第一元素var ul = document.querySelector('ul li')// querySelectorAll() 返回找到匹配的所有元素var ulAll = document.querySelectorAll('ul li')//matches() 檢測該元素與選擇符是否匹配ulId.matches('.leftNav') </script>

    DOM Selector

  • querySelector()和querySelectorAll()返回找到匹配的第一元素和返回找到匹配的所有元素。
  • matches() 檢測該元素與選擇符是否匹配
  • div.classList.remove('user')刪除class,div.classList.add('current')添加class,div.classList.toggle('user')如果有這個class就刪除,沒有就添加。
  • 刪除或添加class另一種比較復雜的方法

    <div id="xx" class="bd user disabled"></div>var div = document.getElementById('xx') var className = div.className.split(/\s/g) var pos = -1 for(var i = 0; i <className.length; i++){if(className[i] === 'user'){pos = ibreak;} } console.log(pos) className.splice(i,1,'dddddd') div.className = className.join(' ')

    總結

    以上是生活随笔為你收集整理的DOM 操作的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。