操作节点对象
增加
- createElement(nodeName):创建节点对象
追加
-
node.appendChild(node):向节点的子节点末尾添加新的节点
注意:如果添加的子节点再文档树中存在,它将从文档树中删除
-
node.insertBefore(node1,node2):在指点位置添加节点
注意:是在已有的子节点前插入一个新节点,node1节点添加在node2节点的前面
删除
- node.remove():删除节点本身
- node.removeChild(node):删除节点下面的一个子节点,不包括本身
克隆
-
node.cloneNode(bool):克隆节点对象
深度克隆:参数为true,会拷贝它本身节点和所有子孙节点;
浅度克隆:参数为false,只拷贝它本身,不包括子孙节点;
注意:克隆会拷贝节点的所有属性和方法,包括行内节点事件,但不包括js动态绑定事件。
cssDOM的使用
js 设置样式,操作的都是行内样式
js 中设置css样式,第二个单词的首字母大写,采用小驼峰命名法
-
非行内样式获取
注意:非行内样式只能读取不能设置
currentStyle:针对IE游览器获取非行内样式
getComputedStyle(node,[伪类]):针对非IE游览器获取非行内样式(第2个参数也可以为空)
兼容性代码实现:
/* 获取非行内样式,直接使用这种方法*/
function getStyle(obj, attr) { //获取非行间样式,obj是对象,attr是值
if (obj.currentStyle) { //针对ie获取非行间样式
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, null)[attr]; //针对非ie
};
};
元素尺寸
offsetParent:获取有定位的父级元素(不包括static定位的元素),都没有则返回body
offsetTop:获取元素上边框到最近定位父元素上边框的像素距离
offsetLeft:获取元素左边框到最近定位父元素左边框的像素距离
offsetWidth / offsetHeight:元素实际宽高(宽高+内边距+边框)
clientWidth / clientHeight:元素视窗宽高(宽高+内边距)
对象拷贝
-
深拷贝(两个对象之间没有任何关系)
-
方法1:对象的assign()方法
Object.assign(obj1,obj2)
-
方法2:使用forEach遍历
for (var attr in obj1) { obj2[attr] = obj1[attr] }
-
方法3:转化为json字符,在转为对象
var str1 = JSON.stringify(obj1); obj2 = JSON.parse(str1);
-
浅拷贝(指针的复制,操作的还是同一个对象)
表单属性
value:text表单的值
type:读写input标签的类型
disabled:是否禁用属性
checked:复选和单选框的选中属性
selected:下拉菜单的选中属性