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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DOM 操作

發(fā)布時(shí)間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DOM 操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下面用的代碼

<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() 將偽數(shù)組變成數(shù)組var array = Array.prototype.slice.call(boxChildren,0)//用遍歷將偽數(shù)組變成數(shù)組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 上一個(gè)兄弟元素var previous = boxChildNodes[0].previousSibling//nextSibling 下一個(gè)兄弟元素var next = boxChildNodes[4].nextSibling//firstChild 第一個(gè)子元素if(boxChildNodes[0] === box.firstChild){console.log('true')}//lastChild 最后一個(gè)子元素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 下第一個(gè) li 下最后一個(gè)元素后添加 listboxChildNodes[1].appendChild(list[0]) //在 banner 下最后一個(gè)元素后添加 listboxChildren[1].appendChild(list[0]) //在 number 下最后一個(gè)元素后添加 Listbox.appendChild(list[0]) //在 box 下最后一個(gè)元素后添加 list//insertBefore() 在指定元素前插入某元素box.insertBefore(list[0],null) //在 box 下最后一個(gè)元素后添加 list 和 appendChild() 方法相同box.insertBefore(list[0],banner[0]) //在 box 下 banner 前添加 listboxChildNodes[1].insertBefore(list[0],banner[0].children[0]) //在 banner 下第一個(gè) li 前添加 listnavBar.childNodes[1].insertBefore(list[0],nav[0].children[2]) //在 nav 下第三個(gè) li 前添加 list//replaceChild() 替換子元素box.replaceChild(list[0],banner[0]) // 把 banner 替換成 listboxChildNodes[1].replaceChild(list[0],banner[0].childNodes[1]) //把 banner 下第一個(gè) li 替換成 list//removeChild() 移除節(jié)點(diǎn)box.removeChild(banner[0]) //把 banner 移除掉boxChildNodes[1].removeChild(banner[0].children[0]) //把 banner 下第一個(gè) li 移除掉//getAttribute() 獲取屬性if(box.getAttribute('id') === box.id){console.log('true')}//setAttribute() 設(shè)置屬性box.id = 'xxx' 和 box.setAttribute('id','xxx') 效果一樣//createElement() 創(chuàng)建一個(gè)元素標(biāo)簽var p = document.createElement('p')banner[0].insertBefore(p,banner[0].children[1])//createTextNode() 創(chuàng)建文本var hello = document.createTextNode('Hello')var text= document.getElementById('text')text.appendChild(hello)//normalize() 合并文本節(jié)點(diǎn)text.normalize()//splitText()text.childNode[0].splitText(5) </script>

Node

  • childNodes獲取到的是父元素下所有的一級(jí)子元素,是一個(gè)類(lèi)似數(shù)組的對(duì)象,例如:boxChildNodes結(jié)果是:[ 0:text , 1:ul.banner , 2:text , 3:ul.number , 4:text, length:5],它會(huì)獲取到元素和元素之間的空隙(文本),如上面所示的0,2,4。使用Array.prototype.slice(childNode,0)方法,可將偽數(shù)組變成數(shù)組,或者用遍歷的方法也可以將它變成數(shù)組。
  • children和childNodes類(lèi)似,區(qū)別是它不會(huì)獲取到文本和文本之間的空隙(文本)。
  • parentNode可以獲取子元素的上一級(jí)(父元素)。
  • previousSibling和nextSibling獲取上一個(gè)或下一個(gè)兄弟元素。
  • firstChild和lastChild獲取父元素下第一個(gè)或最后一個(gè)子元素(包括空隙,也就是文本)。
  • boxChildNodes的第一個(gè)子節(jié)點(diǎn)是boxChildNodes[0] === box.firstChild,boxChildNodes[boxChildNodes.length-1] === box.lastChild。
  • hasChildNodes()可以查詢(xún)父元素下面是否有子元素(1個(gè)或多個(gè)),有返回true,沒(méi)有返回false,要注意:文本節(jié)點(diǎn)也是節(jié)點(diǎn)。
  • ownerDocument 查詢(xún)一個(gè)元素的根元素。
  • appendChild(newNode,oldNode)在父元素上最后一個(gè)元素后面添加新的子元素,無(wú)法指定添加到某個(gè)元素前后。
  • insertBefore(newNode,oldNode)在父元素下某個(gè)子元素前添加新的子元素,如果父元素下的某個(gè)子元素找不到,則在父元素下最后一個(gè)子元素后添加新的子元素和appendChild()方法一樣。
  • removeChild(oldNode)移除父元素下的某節(jié)點(diǎn)
  • 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內(nèi)容
  • document.anchors獲得所有帶name的a標(biāo)簽
  • document.forms獲得所有form標(biāo)簽
  • document.links獲得所有帶href的標(biāo)簽
  • Element

  • nodeTyp===1為標(biāo)簽,nodeType===3為文本。
  • nodeName和tagName都是返回元素的標(biāo)簽名,返回的都是大寫(xiě),用的時(shí)候需要進(jìn)行大小寫(xiě)轉(zhuǎn)換。
  • getAttribute(),setAttribute(),removeAttribute()獲取,設(shè)置和刪除元素的屬性,和直接使用box.id效果一樣,區(qū)別是get...這類(lèi)方法是能獲取自定義屬性的。
  • 自定義屬性可以通過(guò)dataset訪問(wèn)
  • createElement()和createTextNode()創(chuàng)建元素標(biāo)簽和創(chuàng)建文本,需要用appendChild()添加到頁(yè)面中去。
  • normalize()和splitText()合并文本節(jié)點(diǎn)(在父元素上操作)和分割文本節(jié)點(diǎn)(在子元素上操作)

  • <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() 檢測(cè)該元素與選擇符是否匹配ulId.matches('.leftNav') </script>

    DOM Selector

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

    <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(' ')

    總結(jié)

    以上是生活随笔為你收集整理的DOM 操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。