概述
H5 中约定自定义属性都是以‘data-'开头,用来区分是否为自定义属性
在开发中,有时需要在标签上添加一些自定义属性用来存储数据或状态。
自定义属性的操作很简单,但是 什么场景下需要使用就需要练习和理解了,这里准备了典型案例以及源码,帮助更好的理解和应用。
自定义属性操作回顾
1.getAttribute(“自定义属性的名字”) 获取自定义属性的值
H5获取自定义属性新增了dataset[‘属性名’] 的方法,但是只有ie11以上才能支持,兼容性较差一般不用
2.setAttribute(“属性的名字”,“属性的值”); 设置自定义属性的值
3.removeAttribute(“属性的名字”) 移除自定义属性
自定义属性的应用场景
如上图中的需求,选择不同的标签页,显示的内容不同。这种情况下,js需要储存选中的标签状态,需要添加自定义属性。
实现代码(复习)
demo ,供参考复习.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
.tabpanel {
margin-left: 20px;
margin-top: 20px;
}
.tab_lsit {
height: 40px;
}
.tab_lsit ul li {
float: left;
width: 100px;
height: 100%;
line-height: 40px;
padding: 0 20px;
text-align: center;
cursor: pointer;
}
.tab_lsit .current {
background-color: red;
color: #fff;
}
.item {
display: none;
}
</style>
</head>
<body>
<div class="tabpanel">
<div class="tab_lsit">
<ul>
<li class="current">商品介绍</li>
<li>规格与包装</li>
<li>售后保障</li>
<li>商品评价</li>
<li>手机社区</li>
</ul>
</div>
<div class="tab_con">
<div class="item" style="display: block;">商品介绍模块</div>
<div class="item">规格与包装模块</div>
<div class="item">售后保障模块</div>
<div class="item">商品评价</div>
<div class="item">手机社区</div>
</div>
</div>
<script>
var lis = document.querySelector('.tab_lsit').querySelectorAll('li');
var items = document.querySelectorAll('.item');
var currentIndex;
for (let i = 0; i < lis.length; i++) {
//set index
lis[i].setAttribute('data-index', i);
lis[i].onclick = function () {
for (let j = 0; j < lis.length; j++) {
lis[j].className = '';
}
this.className = 'current';
currentIndex = this.getAttribute('data-index');
//可以使用dataset ,dataset 默认以data- 开头
//currentIndex = this.dataset['index']
for (let m = 0; m < items.length; m++) {
items[m].style.display = 'none';
}
items[currentIndex].style.display = 'block';
}
}
</script>
</body>
</html>