dom操作


dom操作

1、dom梗概
2、查找
3、修改
4、添加
5、删除


一、dom梗概

1.dom是什么

document object model
把对象和html元素做一个 一 一的映射
这样就能在js里面用编程的方式对html里面的元素做处理了

2.哪些操作

查找 修改 添加 删除

二、查找

1、根据id值获取元素

getElementById()
返回符合条件的第一个对象

var obj = document.getElementById("aa")
//如果有很多id叫aa的,只能找到第一个
//所以id尽量让它唯一
console.log(obj)

如果不加处理的话,返回值是none
因为html里面是从上到下加载的,先加载的js
还没有生成要找的元素
解决方法:
1.把 这句话

<script src="javascript基础语法.js" ></script>

移到html元素的下面去
2. 或者这么写

<script src="javascript基础语法.js" defer></script>

另外: deger用于延迟加载时,只在用于外引部分时有效,用于内嵌无效

JavaScript延迟加载

window.onload = function() {
var container = document.getElementById("aa")
console.log(container)
//window.onload是窗口加载完才会执行的事件
obj.onclick = function() {
  console. log("1111111")
}

2、根据class值获取元素

getElementsByClassName()
返回符合条件的所有对象组成的数组

var arr = document. getElementsByClassName("cc")
  console.log(arr)
  arr[0].onclick = function() {
  console.log("1111111")
}

3、根据元素名称获取元素

getElementsByTagName()
返回符合条件的所有对象组成的数组

  var arr = document.getElementsByTagName("div")
  console.log(arr)

4、根据选择器获取元素 querySelector()

就像在css里写法一样
返回符合条件的第一个对象

  var obj = document.querySelector(".cc")
  console.log(obj)

5、根据选择器获取元素 querySelectorAll()

返回符合条件的所有对象组成的数组

  var obj = document.querySelectorAll(".cc")
  console.log(obj)

6、根据关系查找

以上是依据方法
这个是依据对象所具备的属性

var obj = document.getElementById("aa")
console.log(obj)
//以html形式打印
console.dir(obj)
//以对象的形式打印
console.log(obj.nextSibling)
console.log(obj.nextElementSibling)

找父级元素
parentNode
parentElement
找孩子
childNodes(把标签还有文本都包括,,换行的空格也算文本)
children(只包括标签)
第一个孩子
firstChild(只有文本)(第一个孩子 范围是包含文本的)
firstElementChild(只有标签)(第一个孩子 范围是只有文本的)
最后一个孩子
lastChild (只有文本)
lastElementChild(只有标签)
上一个
previousSibling(只有文本)
previousElementSibling(只有标签)
下一个
nextSibling
nextElementSibling

三、修改

先获取值

var obj = document.getElementById("aa")
console.log(obj)
console.dir(obj)

1、改内容

innerText 当前修改的内容当作文本来处理
innerHTML 当前修改的内容当作标签来处理
区别与联系
innerText 直接呈现内容
innerHTML会解析标签,然后再呈现
当里面都是文本时(没有标签的话),两个呈现的一样

value 修改input的值(修改 用于收集用户信息的标签)

obj.innerHTML ="<span>hhhh</span>"
console.log(obj.innerText)
//获取

2、改属性

原生属性 (对象自带的属性) 对象.属性=值

 obj.className = 'blue'

自定义属性
setAttribute(属性名,属性值)设置
getAttribute(属性名)获取

obj.setAttribute("index", "444")
console.log(obj.getAttribute('index'))

3、改样式

obj.style.background = "red"
obj.style.color = 'yellow'
obj.style.fontSize = '50px'

obj.className = 'blue'

obj.style.cssText ="background:red; color: blue; font-size:60px;"

4、示例(内附需要注意的点)

//有四个class叫aa的div块,点谁谁会消失
var arr =document.getElementsByClassName("aa")
for(var i=0;i<arr.length;i++){
  arr[i].onclick=function(){
    arr[i].computedStyleMap.dispaly='none'
  }
}
//如果怎么写的话,arr[i]会时undefined
//i都是4
//原因:绑定事件和执行事件是两个事件
//绑定了,但是事件不会执行,
//只有被调用了,才会被执行
//0123的时候已经在绑定事件了,当i等于4时,会跳出循环,去执行事件,此时i的值就已经是4了
//所以不能这么写

//用this,谁触发了这个事件,this就代表谁
var arr =document.getElementsByClassName("aa")
for(var i=0;i<arr.length;i++){
  arr[i].onclick=function(){
    this.computedStyleMap.dispaly='none'
  }
}

四、添加

1、创建元素

可以通过创建元素createElement()来创建元素

var newNode = document.createElement("div")
console. log(newNode)
newNode.innerText='新元素'
//追加内容
newNode. className = 'blue'
//追加属性
newNode. setAttribute("index", 'hhhh')
//添加自定义属性
newNode. style.background = 'red'
//添加样式

也可以通过复制元素 cloneNode()来创建元素

参数有两个:true或者是false
true 连内容一起复制
false浅复制,只复制外壳(默认)

var oldNode=document.getElementById("hello")
//先找到这个元素
var newNode = oldNode. cloneNode(true)

2、添加元素到html

var container = document.getElementById(“aa”)
var flag = document.getElementById(“test”)
1,appendChild()在子元素的最后一个位置添加
container. appendChild(newNode)
2,insertBefore(新元素,插入在哪个节点之前)在某个元素前添加
container.insertBefore(newNode, flag)
3,替换节点replaceChild(新元素,要被替换的元素)
container.replaceChild(newNode, flag)

五、删除

想删除一个元素 就去找它的父级元素,父级元素调用removeChild()

//第一种找父级元素的方法:直接找
var container = document.getElementById("aa")
var flag = document.getElementById("test")
//第二种找父级元素的方法:找关系
var container = flag.parentElement

container.removeChild(flag)

总结

dom操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值