JS入门到精通详解(7)

操作元素样式

  1. ele.style

访问或设置行内样式
  1. window.getComputedStyle()

//获取非行内样式 
//标准浏览器
// alert(getComputedStyle(o_div,1).width);
//IE浏览器
// alert(o_div.currentStyle.width);
//兼容             对象 属性
function getStyle(obj,attr){
	return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj,true)[attr];
	// return window(因为预解析里面没有这个玩意,需要声明一下).getComputedStyle ? getComputedStyle(obj,1)[attr] : obj.currentStyle[attr];
}

操作元素类名

ele.className

ele.classList

  1. ele.classList : 获取元素的全部类名

  1. ele.classList.lentgh: 获取到元素类名的数量

  1. ele.classList.add(): 向元素添加一个或多个类名

  1. ele.classList.remove() : 可以删除元素的一个或多个类名

  1. ele.classList.item(index) : 可以获取到元素类名索引为index的类名

  1. ele.classList.toggle() : 可以为元素切换类名(判断如果存在,就删除,如果不存在,就加入)

  1. ele.classList.contains(x) : 查看元素是否存在类名为"x"的类

操作元素属性

原生属性操作

元素.属性
元素['属性']
元素.getAttribute('属性名')
元素.setAttribute('属性名','属性值')
元素.removeAttribute('属性名')

自定义属性操作

  • getAttribute

  • setAttribute(key,value)

  • removeAttribute(key)

元素.getAttribute('属性名') : 获取属性
元素.setAttribute('属性名','属性值') : 设置属性
元素.removeAttribute('属性名') : 删除属性

H5自定义属性的操作 ( data-* )

  • ele.dataset : 读写自定义属性

<body>
    <div id="box" data-my-id="me"></div>
	<script>
        var o_div = document.getElementById('box');
		console.log(o_div.dataset.myId); //'me'
	</script>
</body>

操作元素内容

  1. innerHTML : 设置或获取当前节点内容的内容(超文本)(标签)(可以解析超文本的含义)

  1. innerText : 设置或获取当前节点内部的内容(纯文本)(不能解析超文本)

  1. value : 设置或获取表单中的内容

DOM 操作复习

获取元素尺寸

offsetWidth / offsetHeight(只能获取不能设置)

  1. 节点对象.offsetWidth : 获取当前节点对象的相对宽度(width + border + padding)

  1. 节点对象.offsetHeight : 获取当前节点对象的相对高度(height + border + padding)

clientWidth / clientHeight

  1. 节点对象.clientWidth : 获取当前节点对象的可视区宽度(width + padding)

  1. 节点对象.clientHeight : 获取当前节点对象的可视区高度(height + padding)

获取元素偏移量

offsetLeft / offsetTop

  1. offsetLeft : 相对左边的距离

  • 如果父元素没有定位,则当前元素相对于页面左边(body)的left值

  • 如果父元素有定位,则当前元素相对于父元素左边的left值。

  1. offsetTop : 相对上边的距离

  • 如果父元素没有定位,则当前元素相对于页面上边(body)的top值

  • 如果父元素有定位,则当前元素相对于父元素上边的top值。

clientLeft / clientTop

  1. clientLeft : 表示一个元素的左边框的宽度,以像素表示。

  1. clientTop : 表示一个元素的上边框的宽度,以像素表示。

本地模拟瀑布流案例

DOM节点及以节点操作

DOM节点

  • DOM 的节点我们一般分为常用的三大类 元素节点 / 文本节点 / 属性节点

  • 什么是分类,比如我们在获取元素的时候,通过各种方法获取到的我们叫做元素节点(标签节点)

  • 比如我们标签里面写的文字,那么就是文本节点

  • 写在每一个标签上的属性,就是属性节点

获取节点(高级选取)

  1. firstChild : 第一个子节点

  1. firstElementChild : 第一个元素子节点

  1. lastChild : 最后一个子节点

  1. lastElementChild : 最后一个元素子节点

  1. previousSibling : 前一个兄弟节点

  1. previousElementSibling : 前一个元素兄弟节点

  1. nextSibling : 下一个兄弟节点

  1. nextElementSibling : 下一个元素兄弟节点

  1. parentNode : 父节点

  1. childNodes : 获取到所有的元素子节点 与 文本子节点

//删除空白文本子节点
function noSpaceNode(node) {
	//获取所有子节点
	var childs = node.childNodes;
	//遍历所有的子节点
	for (var i = 0; i < childs.length; i++) {
		//文本							空白
		if (childs[i].nodeType === 3 && /^\s+$/.test(childs[i].nodeValue)) {
			//删除空白节点
			node.removeChild(childs[i]);
		}
	}
	return node;
}
  1. children : 获取所有的元素子节点

节点属性

nodeType
  • nodeType:获取节点的节点类型,用数字表示

nodeName
  • nodeName:获取节点的节点名称

nodeValue
  • nodeValue: 获取节点的值

汇总

-

nodeType

nodeName

nodeValue

元素(标签)节点

1

大写标签名

null

属性节点

2

属性名

属性值

文本节点

3

#text

文本内容

创建节点

  1. document.createElement('标签名') : 创建元素节点

  1. document.createTextNode('文本') : 创建文本节点

  1. document.createDocumentFragment() : 创建文档碎片 (为了减少与页面的交互,提高性能)

插入节点

  1. 父节点.appendChild(子节点) : 将这个子节点追加到父节点中子节点列表的末尾。

  1. 父节点.insertBefore(新节点,指定的旧的节点) : 在指定的旧节点前面插入新节点

修改节点

  1. 父节点.replaceChild(新节点,旧节点) : 替换节点

删除节点

  1. 父节点.removeChild(子节点) : 删除子节点

  1. 当前节点.remove() : 删除当前节点

克隆节点

  1. 当前节点.cloneNode([true]) : 复制节点

false(默认) : 只克隆当前节点,不包含内容。
true : 克隆当前节点,包含内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值