DOM--自定义属性的操作

DOM元素属性分为内置属性和自定义属性,比如我们常见的class、id、src、input等属性,都是内置属性,简单理解就是元素自带的属性。而自定义属性就是程序员为了方便使用而自己给元素设置的属性。

1. 获取属性值

① element.属性 获取属性值。
② element.getAttribute('属性');

区别:
(1) element.属性 获取内置属性值(元素本身自带的属性),如img..src
(2) element.getAttribute(‘属性’); 主要获得自定义的属性 (标准) 我们程序员自定义的属性;

2. 设置属性值

① element.属性 = ‘值’   设置内置属性值。
② element.setAttribute('属性', '值'); 

区别:
(1) element.属性   设置内置属性值
(2) element.setAttribute(‘属性’,'值');   主要设置自定义的属性 (标准)

3. 移除属性

① element.属性 = ‘’   将值设置为空,就相当于移除了内置属性值。
element.removeAttribute('属性');  主要移除自定义的属性 

4.案例:tab 栏切换

需求:当鼠标点击上面相应的选项卡(tab),下面内容跟随变化

<!-- css样式 -->
<style>
    * {
        margin: 0;
        padding: 0;
    }
    .tab-box {
        width: 800px;
        margin: 50px;
    }
    .clear::after {
        content: "";
        display: block;
        clear: both;
    }
    .tab-title {
        height: 50px;
        background-color: #F9F9F9;
    }
    .tab-title li {
        float: left;
        line-height: 50px;
        list-style: none;
    }
    a {
        display: block;
        color: #666;
        text-decoration: none;
        padding: 0 30px;
    }
    .current {
        color: #fff;
        background-color: #DE3A38;
    }
    .item {
        display: none;
        margin-top: 10px;
        height: 160px;
        padding: 20px;
        background-color: lightpink;
    }
</style>
<body>
    <!-- html结构 -->
    <div class="tab-box">
        <div class="tab-title">
            <ul class="clear">
                <li><a href="#" class="current">商品介绍</a></li>
                <li><a href="#">规格与包装</a></li>
                <li><a href="#">售后保障</a></li>
                <li><a href="#">商品评价</a></li>
            </ul>
        </div>
        <div class="tab-content">
            <div class="item" style="display: block;">
                商品介绍对应版块的内容
            </div>
            <div class="item">
                规格与包装对应版块的内容
            </div>
            <div class="item">
                售后保障对应版块的内容
            </div>
            <div class="item">
                商品评价对应版块的内容
            </div>
        </div>
    </div>
    <!-- js代码 -->
    <script>
        // 1. 获取元素
        let as = document.querySelectorAll('.tab-title li a');
        let items = document.querySelectorAll('.tab-content .item');
        // 2. 循环遍历给每个a绑定事件
        for (let i = 0; i < as.length; i++) {
            as[i].onclick = function() {
                // 然后给其添加自定义属性index,等同于索引号
                this.setAttribute('index', i);
                // 利用排他思想为其添加类名current,表示点中的这个选项栏样式特别
                // (1) 先给所有a 清除类名current(干掉所有人)
                as.forEach(item => {
                    item.className = '';
                });
                // (2) 给当前的a添加类名current(留下我自己)
                this.className = 'current';
                // 点击a对应的内容模块要显示出来,利用刚刚设置的自定义属性index
                // (1) 获取index的属性值,定义变量index接收
                let index = as[i].getAttribute('index');
                // (2) 使用index作为下标获取对应版块的内容,同样需要利用排他思想
                items.forEach(item => {
                    // 先让所有的item都隐藏(干掉所有人)
                    item.style.display = 'none';
                });
                // 让对应版块的item显示(留下需要的)
                items[index].style.display = 'block';
            };
        }
    </script>
</body>

案例分析:

① Tab栏切换有2个大的模块
② 上的模块选项卡,点击某一个,当前这一个底色会是红色,其余不变(排他思想) 修改类
名的方式
下面的模块内容,会跟随上面的选项卡变化。所以下面模块变化写到点击事件里面。
④ 规律:下面的模块显示内容和上面的选项卡一一对应,相匹配。
⑤ 核心思路: 给上面的tab_title 里面的所有小a 添加自定义属性,属性值从0开始编号。
⑥ 当我们点击tab_title 里面的某个小a,让tab_content 里面对应序号的内容显示,其余隐藏(排他思想)

5.H5自定义属性

自定义属性目的:是为了保存并使用数据有些数据可以保存到页面中而不用保存到数据库中
自定义属性获取是通过getAttribute(‘属性’) 获取。

但是有些自定义属性很容易引起歧义,不容易判断是元素的内置属性还是自定义属性。
H5给我们新增了自定义属性:

(1) 设置H5自定义属性

H5规定自定义属性以data-开头作为属性名并且赋值。
比如 <div data-index=“1”></div>    或者使用 JS 设置   element.setAttribute(‘data-index’, 2)

(2) 获取H5自定义属性

① 原来获取自定义属性的方式依旧起效:  element.getAttribute(‘data-index’);
② H5新增方式:  element.dataset.index 或者 element.dataset[‘index’]    具有兼容性问题

猜你喜欢

转载自blog.csdn.net/JJ_Smilewang/article/details/125303589