排他思想和节点操作基础

排他思想

利用循环获取所有所需元素,创造一个伪数组。

<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<script>
var btns = doucument.getElementsByTagName('button');
for (var i = 0; i< btns.length; i++){
	btns[i].onclick = function(){
		this.style.backgroundColor = 'pink';
	}
}
</script>
</body> 

但点击后按钮的颜色并不会再次变回来,所以需要每次点击时把所有的样式清楚一次,再对点击的那个按钮进行样式修改。

<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<script>
var btns = doucument.getElementsByTagName('button');
for (var i = 0; i< btns.length; i++){
	btns[i].onclick = function(){
		for(var i = 0; i = btns.length; i++){
			btn[i].style.back
		}
		this.style.backgroundColor = 'pink';
	}
}
</script>
</body>

自定义属性的操作

1.获取属性值

element.属性 获取属性值
element.getAttribute(‘属性值’);
它们的区别是element.属性 获取的是内置属性值(元素本身自带的属性),而element.getAttribute(‘属性’)主要获得自定义的属性(标准)我们程序员自定义的属性。

2.设置属性值

element.属性=‘值’ 设置内置属性值。
element.setAttribute(‘属性’,‘值’); 主要设置自定义的属性(标准)

3.移除属性值

element.removeAttribute(‘属性’);

4.技巧

排他思想也可以用于隐藏盒子,来改变页面的内容或结构。在很多页面有所应用。

5.H5自定义属性

自定义属性目的:是为了保存并使用数据。有些数据可以保存到页面中而不用保存到数据库中。
自定义属性是通过getAttribute(‘属性’)获取。
但是有些自定义属性很容易引起歧义,不容易判断是元素的内置属性还是自定义属性。
1.H5规定自定义属性data-开头做为属性名并且赋值。

或者 element.setAttribute(‘data-index’,2)
2.兼容性获取 element.getAttribute( ‘data-index’ );
H5新增 element.dataset.index 或者 element.dataset[ ‘index’ ] ie 11开始支持
3.如果自定义属性里面有多个-链接的单词,我们获取的时候采取 驼峰命名法。

节点操作

因为元素操作有时过于繁琐且逻辑性不强,所有有时用节点层级关系获取元素,节点操作可以利用父子节点关系获取元素,虽然逻辑性强但兼容性稍差。
页面中所有的内容都是节点(标签、属性、文本、注释等),在DOM中,节点使用node来表示。
HTML DOM中都所有节点均可通过javascript进行访问,所有HTML元素(节点)均可被修改,也可以创建或删除。
在这里插入图片描述
节点至少拥有nodeType(节点类型)、nodeName(节点名称)和nodeValue(节点值)这三个基本属性。
元素节点 nodeType 为1
属性节点 nodeType 为2
文本节点 nodeType 为3 (文本节点包含文字、空格、换行等)
节点操作主要操作的是元素节点

1.节点层级

利用DOM树可以把节点划分为不同的层级关系,常见的是父子层级关系。

1.父节点

node.parentNode
可以得到元素的父级节点,但是离元素最近的父级节点,
如果找不到父节点就返回null。

2.子节点

parentNode.childNodes(标准)
parentNode.childNodes返回包含指定节点的子节点的集合,该集合为即时更新的集合。这个集合包含节点 元素节点 文本节点等等。如果只想获得里面的元素节点,则需要专门处理,所以我们一般不提倡使用childNodes。
parentNode.children(非标准)
可以获得子元素节点,其余节点不返回。
parentNode.fristChild
返回第一个子节点,没有则返回null。但包含所有节点。
(parentNode.lastChild与之同理)
parentNode.fristElementChild
可以获取第一个子元素节点。(parentNode.lastElementChild与之同理,但这两个方法有兼容性问题,IE9以上才支持。)
因为parentNode.fristElementChild有兼容性问题,所以一般并不使用,多数使用parent.children[0]来获取第一个子元素节点,parent.children[属性.children。length - 1]来获取最后一个元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值