获得元素dom&创建dom&操作dom
javascript API笔记
特殊元素获取
var html = document.documentElement;
var body = document.body
获得元素document.
根据id名获取元素:getElementById;
根据标签名获取元素:getElementsByTagName,返回一个数组;
根据类名获取元素:getElementsByClassName,返回一个数组;
根据name属性值获取元素:getElementsByName,返回一个数组;
根据选择器获取元素:
querySelector:获取一个元素,推荐使用 用法类似写css;
querySelectorAll:返回一个元素数组。
getElementById
var p1 = document.getElementById( ‘p1’ );
语法: document.getElementById( ‘id’ )
习惯: 写标签的时候, 属性使用 双引号, 写字符串的时候属性写 单引号
getElementsByTagName
1 | |
document.getElementsByTagName( ‘p’ );
getElementsByTagName
var div = document.getElementsByTagName( ‘div’ )[ 0 ];
getElementsByClassName
document.getElementsByClassName (‘class’) 通过类名获取元素,以伪数组形式存在。
querySelector
// 选择器 ( selector )
// -> 基本选择器: #id, .className, tagName, *
// -> 复合选择器: 子代选择器( > ), 后代选择器( ‘ ‘ ), …// 如果想到定位 这两个 p // #dv1 > p // 使用选择器获得元素的 语法 // docuemnt.querySelector( '选择器的字符串' ) 获得所有的 符合选择器的元素中的 第 0 个
querySelectorAll
// document.querySelectorAll( ‘选择器字符串’ ) 获得所有的 符合选择器的元素( 伪数组 )
1 | |
document.body
如果需要获得页面中的 body, 除了使用 get 或 query 系列的方法之外
还可以使用 document.body, 其就是 当前页面的 body 标签
children
使用 children 来获得元素的 子元素
例如
1 | |
创建元素( 重要 )
利用字符串来拼接
拿字符串拼接只能一次性处理, 无法对每一个标签( DOM 对象 )精细的控制
1 | |
创建元素
document.createElement( ‘元素的标签名字’ )
元素操作
类名操作
Node指一个有效的DOM节点,是一个通称
Node.classList.add(‘class’) 添加class
Node.classList.remove(‘class’) 移除class
Node.classList.toggle(‘class’) 切换class,有则移除,无则添加
Node.classList.contains(‘class’) 检测是否存在class
自定义属性的获取和设置
获取自定义属性:元素对象.dataget[‘自定义属性名称’]
设置自定义属性:元素对象.dataset[‘自定义属性名称’]
1 | |
追加元素
父元素.appendChild( 子元素 )
插入元素
父元素.insertBefore( 新元素, 页面中的元素 )
将 “新元素” 插入到 “页面中的元素” 的 前面
删除元素
父元素.removeChild( 子元素 )
修改元素
查询元素
删除( remove )元素 从父元素中删除子元素
替换( replace )元素[ 知道 ]
cloneNode 与 移动 DOM 元素
dom节点操作
html
1 | |
获取节点
1 | |
创建节点
var newnode = document.createElement(“p”);
添加节点内容
newnode.innerHTML = “创建的节点内容”
插入节点
container.appendChild(newnode)
修改节点样式
1 | |
普通节点删除
1 | |
获取元素长宽高和滚动距离
1.对于css盒子模型,我们使用width和height等来定义dom元素的宽高,而有时我们需要在js中获取元素的宽高进行一些操作。
2.dom操作提供了相应的属性来实现这一点
窗口大小
二,clientWidth和clientHeight
1.clientWidth和clientHeight用于获取元素的视口宽高,不包含border,margin,还要滚动条。
元素大小
三,offsetWidth和offsetHeight
1.元素的实际宽高,包含滚动条和border,不包含margin
四,scrollHeight和scrollWidth
1.当一个元素出现滚动时,这个元素的clientWidth和clientHeight表示了元素的视口宽高,而scrollHeight和scrollWidth用于表示该元素的滚动的实际宽高。
五,scrollTop
1.出现滚动条的元素,滚动距离上边界的距离。
2.如下图,红色的元素的scrollTop 等于绿色线段的长度。
3.scrollTop是可以修改的,修改时蓝色元素移动到相应位置
使用
dom.offsetWidth
var container = document.getElementById(‘mytable’)
console.log(‘width’,container.offsetWidth);
元素相对可视窗口的位置
dom.getBoundingClientRect()
let object = document.getElementById(‘object’)
let rectObject = object.getBoundingClientRect();
rectObject.top / left / right / bottom / width / height;