节点的操作

获取节点

获取节点的方法

getElementById
getElementByClassName
getElementByTagName
querySelector

getElementById

这个方法只能由document这个对象触发

var elm = document.getElementById(IDString);

这里写图片描述
注意:在操作的时候不要大规模添加ID,可以在一个模块的顶部等添加。


getElementsByClassName

var collection = [elm | document].getElementsByClassName(classes);
这里写图片描述
HTMLCollection—–拥有数组属性,却并不全等于数组的对象
live html collection—-不需要再一次获取原来的节点,有新增的会自动添加到HTMLCollection中


这里写图片描述
根据在文档树中出现的先后顺序进行解析获取
如果想单独获取其中某一个span元素则可以新增class以区别,如下图
这里写图片描述


getElementsByTagName

var collection = [elm | document].getElementsByTagName(Tag)
这里写图片描述
通常这个方法选用elm下去选择tag,而不用document对象调用

用法如下图
这里写图片描述
其中用*号将选择该元数据下的所有元素


querySelector

这里写图片描述
其中[All] 是可选的参数,代表当前元素对象或文档对象下的所有符合selector选择器的都返回,返回值是HTMLCollection,而querySelector则找到一个符合的就将返回指定的节点
上图中
var liLiveList = dom.getElementsByTagName(‘li’);
var liNotLiveList = dom.querySelectorAll(‘li’);
都将获得dom元素及对象下的li元素节点,但是一个是实时更新的,当节点树改变时会添加,一个却不是。


应用–兼容IE6

注意:getElementsByClassName()方法并不存在。

获取元素总结

getElementById
适合获取一个模块上的父节点或者一块区域的父节点
通常用getElementById获取一片区域的父节点,然后配合getElementsByClassName
获取拥有指定样式的元素
getElementsByClassName
getElementsByTagName
这两者有相似点,但是由于HTML文档的可变性比较大,比如通常我们都会使用div span等通用的元素写入新的HTML文档,会导致元素节点顺序变化。
所以建议使用getElementsClassName
querySelector
使用这个方法的时候建议不要使用太长的选择器来选择节点。

创建节点

通常在和后台交互以后会获取很多的JSON数据,这些数据需要反映到页面上,所以需要用createElement 和innerHTML反映到页面

createElement
innerHTML
两种方式

createElement

这里写图片描述
createElement是document对象上所唯一拥有的。
这个创造出来的节点元素并没有放入文档树,是存储在内存中,是还悬空的元素


innerHTML

element.innerHTML = HTMLString
这里写图片描述

这里写图片描述

应用总结

节点个数
createElement方式时需要要一个节点一个节点的创建
而innerHTML则能一个字符串就能完成创建

事件处理
用createElement方式添加的节点能马上为节点添加事件
而innerHTML不能立即为节点添加事件,只能通过在HTML里添加

两者的结合使用
这里写图片描述

插入节点

appendChild
insertBefore
insertAdjacentElement
insertAdjacentHTML

appendChild

这里写图片描述
添加元素到父元素的闭合标签前面。


例如下图
这里写图片描述

insertBefore

这里写图片描述
需要三个元素 父节点 待插入节点 待插入节点的兄弟节点

使用方法如下图
这里写图片描述

insertAdjacentElement

可以选择相应参照的节点的任意一个至四个位置插入
这里写图片描述


insertAdjacentHTML

这个和insertAdjacentElement 使用相似,不过是用字符串形式插入。
不太建议用这种方式插入节点

应用

实现兼容
这里写图片描述

修改节点

--innerHTML
--textContent(innerText)
textContent是W3C标准

innerHTML

万能的innerHTML
elm.innerHTML = '<img src="a.png"/>';
elm.innerHTML = '';
elm.innerHTML = '<ul><li></li><li></li><li></li></ul>';
elm.innerHTML += '<a href="http:www.163.com">网易</a>';

textContent

FF兼容
这里写图片描述


删除节点


--removeChild
--replaceChild
--innerHTML

removeChild

这里写图片描述


replaceChild

这里写图片描述

实际应用
这里写图片描述
replaceChild == removeChilde & appendChilde
删除一个节点的同时添加一个节点

注意:remove event :移除将要被删除节点的事件,避免内参的不断增加
elm.innerHTML = ‘’;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值