dom(-1)

106 阅读2分钟

1dom的定义:

首先我们需要明白js的组成部分:ecma+dom+bom

ecma(解释器,语法,数字,字符串等

dom(文档对象模型,标签的操作

bom(浏览器对象模型

2,bom获取元素:

byid、bytagname,byclassname,byname

id和标签兼容所有浏览器,classname只兼容ie9以上,name主要用在获取表单元素上

3,获取子节点:

父级.childnodes/children:

前者在ie9之前是获取元素节点,之后是所有,后者获取所有

子级.parentnode:获取父节点

兄弟节点的获取

previoussibling/previous elementsibling;上一个节点/上一个元素节点

nextsibling/nextelement sibling;下一个节点/下一个元素节点

同样,前者在ie9之前是获取元素节点,9以后是所有节点

补充:兼容ie9之前低版本的方法:

例:var oPrev=节点.previousElementSibling || 节点.previousSibling

同理还有Frist child/.firstElementChild            astChild .lastElementChilddeng 等

4,创建元素的方法

01,document.createelement(”div“

02,obj.innerHTML:inner HTML会覆盖原本元素的属性,以及事件

5,插入元素:需要搭配知识点4使用

01.向后加:append child(子级)

02,向前加:insert before(要插入的元素,插队到拿一个元素前面)

注意:对于已存在的元素插入,是有剪切效果的,剪切已存在元素到新地方

6,删除,替换,克隆

删除:父级.removechild(子级

替换:父级.replace child(新的子级,老的子级)

克隆:元素.clonenode()/元素.clonenode(true),深度克隆,可以复制标签礼拜的内容

7,操作标签内容的方法:

innerhtml/innertext/outerHTML

区别在于,innerHTML会识别标签,text不会

获取 obj.innerHTML 设置 obj.innerHTML='xxx' 

8.浏览器可视区的大小获取:

document,document element.client(hight/width/top/left

9,鼠标滚动事件以及滚动距离的获取:

滚动事件:wind.onscroll=function(){}

滚动距离:document。documentelement.scroll(left/top

10,物体的位置信息获取:

元素/标签.offset(width/height/top/left

优先获取到定位父级的距离,如果没有定位父级,那么测量到body的距离

11.class name的缺点:如果style里面有很多name样式,那么添加和删除将格外不方便,例如删除需要将里面的str按照空格切割为数组,再准备一个空的数组,for循环挨个对比,删除不想要的,再输出这个新的数组,为此html5新增了一些方式,

添加:元素(0div).classlist.add(‘需要添加的name’)

删除:元素(0div).classlist.remove(‘需要删除的name’)