Dom基本信息

什么是Dom?
文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口。
DOM树
在这里插入图片描述
文档:Document,每个页面都是一个文档
元素:html中的标签都属于元素
属性:页面中的所有节点都属于属性
Dom的内容操作

  • innerHTML和innerText两种方法: 向页面中查入信息
  • innerHTML:插入的对象如果存在Html标签会当做正常标签被解析。
  box_ele.outerHTML = "<strong>你好我换标签了</strong>";//`**你好我换标签了**
 console.log(box_ele.innerHTML)
  • innerText:主要用于向页面中插入文本信息。
box_ele.innerText="我吃饱了"//我吃饱了
 console.log(box_ele.innerText);

Dom样式操作

  • box.style 专门用来更改元素样式的; cssText : 会把赋值的内容直接放在行内样式的style之中
  • 语法:box_ele.style.cssText = "background-color : #ddd;
  • 简写:box_ele.style.backgroundColor="#ddd"
  • 注:background-color在第二种写法中改为驼峰命名
    Dom节点
  • 辨别节点的类型 : nodeType;
  • 关于节点类型常见的有三种:
  • 元素节点:1
  • 属性节点:2
  • 文本节点:3
for(var i = 0 ; i < child_nodes.length ; i ++){
console.log(child_nodes[i]);
console.log(child_nodes[i].nodeType);
  • 获取文本的值; nodeValue;
  • 元素类型没有节点值
  • 属性类型的文本值为属性值
  • 文本类型的文本值为文本内容
if(child_nodes[i].nodeType === 3){
获取节点内容
console.log(child_nodes[i].nodeValue);
        }
     }

nodeName判断节点名称

  • 元素类型为大写标签名
  • 属性类型的文本值为属性名
  • 文本类型的文本值为#text
 for(var i = 0 ; i < children.length ; i ++){
 console.log(children[i].nodeName);
if( children[i].nodeName === "STRONG"){
         children[i].style.color = "#f10";
    }
 }

关系型节点获取
childNodes:获取某一节点下的“所有子一级节点”

<div>
<p>hello</p> </div>
var oDiv = document.querySelector('div')
 console.log(oDiv.childNodes) 

children:获取某一节点下所有的子一级“元素节点”

var oDiv = document.querySelector('div')
console.log(oDiv.children) 
HTMLCollection [p]=>伪数组

子集:firstChild和lastChild
分别表示为该元素第一个子集和最后一个子集

var oDiv = document.querySelector('div')
console.log(oDiv.firstChild) // #text=>文本节点

firstElementChild和lastElementChild
分别表示获取第一个和最后一个元素节点

var oDiv = document.querySelector('div')
console.log(oDiv.firstElementChild) // <p>hello</p>=>第一个元素

兄弟:
nextSibling和previousSibling
分别表示下一个和前一个兄弟节点

在这里插入代var oLi = document.querySelector('#b')
console.log(oLi.previousSibling) // #text

nextElementSibling和previousElementSibling
分别表示下一个和前一个元素兄弟节点

var oLi = document.querySelector('#b')
console.log(oLi.nextElementSibling) // <li id="c">!!!</li

父亲:
parentNode:获取某一个节点的 “父节点”

var oLi = document.querySelector('#b')  
console.log(oLi.parentNode) // <ul>...</ul>

attributes:获取某一个 “元素节点” 的所有 “属性节点”

var oLi = document.querySelector('#a')
console.log(oLi.attributes) //0: id

操作 DOM 节点
说到操作无非是“”增、删、改、查“”
创建一个节点:分为两种
createElement:用于创建一个元素节点

var oDiv = document.createElement('div')// 创建一个 div 元素节点

createTextNode:用于创建一个文本节点

var oText = document.createTextNode('我是一个文本')

向页面中增加一个节点:也分为两种
appendChild:是向一个元素节点的末尾追加一个节点
语法:语法: 父节点.appendChild(要插入的子节点)

var oDiv = document.createElement('div')
oDiv.appendChild(oText)
console.log(oDiv) // <div>我是一个文本</div>

insertBefore:向某一个节点前插入一个节点
语法: 父节点.insertBefore(要插入的节点,插入在哪一个节点的前面)

ele.appendChild(node)把node节点插入到box的内部最后的位置
 var box_ele = document.getElementById("box");
 box_ele.appendChild(ele);
 ele.insertBefore(newNode,existNode)在box内,把newNode节点插入到exsitNode的前面
 box_ele.insertBefore( ele , box_ele.childNodes[0]);

删除页面中的某一个节点
语法:父节点.removeChild(要移除的字节点)

var oDiv = document.querySelector('div')
var oP = oDiv.querySelector('p')  
// 移除 div 下面的 p 标签
 oDiv.removeChild(oP)

修改页面中的某一个节点
replaceChild:将页面中的某一个节点替换掉
语法: 父节点.replaceChild(新节点,旧节点)

var oDiv = document.querySelector('div')
    var oP = oDiv.querySelector('p')
    
    // 创建一个 span 节点
    var oSpan = document.createElement('span')
    // 向 span 元素中加点文字
    oSpan.innerHTML = '我是新创建的 span 标签'
    
   	// 用创建的 span 标签替换原先 div 下的 p 标签
    oDiv.replaceChild(oSpan, oP)
    
    console.log(oDiv)//<div>
    		<span>我是新创建的 span 标签</span>
    	</div>

获取元素的非行间样式(之前说到style方法只能获取或者修改行内样式)
getComputedStyle(非IE使用) 和 currentStyle(IE使用)=>获取css非行内样式
getComputedStyle(非IE使用)
语法:window.getComputedStyle(元素, null).要获取的属性

div {
    width: 100px;
  }
</style>
<body>
  <div style="height: 100px;">
    <p>我是一个 p 标签</p>
  </div>

  <script>
    var oDiv = document.querySelector('div')
		console.log(window.getComputedStyle(oDiv).width) // 100px
    console.log(window.getComputedStyle(oDiv).height) // 100px

urrentStyle(IE使用)
语法: 元素.currentStyle.要获取的属性

div {
    width: 100px;
  }
</style>
<body>
  <div style="height: 100px;">
    <p>我是一个 p 标签</p>
  </div>

  <script>
    var oDiv = document.querySelector('div')=>首先都需要先获取元素节点div
		console.log(oDiv.currentStyle.width) // 100px
    console.log(oDiv.currentStyle.height) // 100px

获取元素的偏移量:
主要分为;两组offsetLeft 和 offsetTop 和 offsetWidth 和 offsetHeight
offsetLeft 和 offsetTop:获取的是元左边的偏移量和上边的偏移量
又分为两种情况;
没有定位的情况下
获取元素边框外侧到页面内侧的距离
有定位的情况下
获取元素边框外侧到定位父级边框内侧的距离(其实就是我们写的 left 和 top 值
offsetWidth 和 offsetHeight :获取的是偏移浏览器窗口的宽度和高度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值