zoukankan      html  css  js  c++  java
  • 0164 DOM 之 自定义属性操作:获取属性值,设置属性值,删除属性, tab 栏案例,H5自定义属性

    1.5.1 获取属性值

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

        <div id="demo" index="1" class="nav"></div>
        <script>
            var div = document.querySelector('div');
            // 1. 获取元素的属性值
            // (1) element.属性
            console.log(div.id);
    	console.log(div.index); // undefined
            //(2) element.getAttribute('属性')  get得到获取 attribute 属性的意思 我们程序员自己添加的属性我们称为自定义属性 index
            console.log(div.getAttribute('id')); // demo
            console.log(div.getAttribute('index')); // 1
            console.log(div.getAttribute('class')); // nav
    	</script>
    

    1.5.2 设置属性值

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

            // 2. 设置元素属性值
            // (1) element.属性= '值'
            div.id = 'test';
            div.className = 'navs';
            // (2) element.setAttribute('属性', '值');  主要针对于自定义属性
            div.setAttribute('index', 2);
            div.setAttribute('class', 'footer'); // class 特殊  这里面写的就是
    

    1.5.3 删除属性

    1550915513137

    	// class 不是className
            // 3 移除属性 removeAttribute(属性)    
            div.removeAttribute('index');
    
        <div id="demo" index="1" class="nav"></div>
        <script>
            var div = document.querySelector('div');
            // 1. 获取元素的属性值
            // (1) element.属性
            console.log(div.id);
            console.log(div.className); // nav
            console.log(div.class); // undefined,这里要用className
    
            //(2) element.getAttribute('属性')  get得到获取 attribute 属性的意思 我们程序员自己添加的属性我们称为自定义属性 index
            console.log(div.getAttribute('id'));
            console.log(div.getAttribute('index'));
    
    
            // 2. 设置元素属性值
            // (1) element.属性= '值'
            div.id = 'test';
            div.className = 'navs';
    
            // (2) element.setAttribute('属性', '值');  主要针对于自定义属性
            div.setAttribute('index', 2);
            div.setAttribute('class', 'footer'); // class 特殊  这里面写的就是class 不是className
    
            // 3.移除属性 removeAttribute(属性)    
            div.removeAttribute('index');
        </script>
    

    1.5.4. 案例:tab栏

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            
            li {
                list-style-type: none;
            }
            
            .tab {
                 978px;
                margin: 100px auto;
            }
            
            .tab_list {
                height: 39px;
                border: 1px solid #ccc;
                background-color: #f1f1f1;
            }
            
            .tab_list li {
                float: left;
                height: 39px;
                line-height: 39px;
                padding: 0 20px;
                text-align: center;
                cursor: pointer;
            }
            
            .tab_list .current {
                background-color: #c81623;
                color: #fff;
            }
            
            .item_info {
                padding: 20px 0 0 20px;
            }
            
            .item {
                display: none;
                height: 80px;
                font-size: 30px;
                line-height: 80px;
                text-align: center;
                color: orangered;
            }
            
            .item:nth-child(2n) {
                background-color: pink;
            }
            
            .item:nth-child(2n+1) {
                background-color: lightcyan;
            }
        </style>
    </head>
    
    <body>
        <div class="tab">
            <div class="tab_list">
                <ul>
                    <li class="current">商品介绍</li>
                    <li>规格与包装</li>
                    <li>售后保障</li>
                    <li>商品评价(50000)</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">
                    商品评价(50000)模块内容
                </div>
                <div class="item">
                    手机社区模块内容
                </div>
    
            </div>
        </div>
        <script>
            // 获取元素
            var tab_list = document.querySelector('.tab_list');
            var lis = tab_list.querySelectorAll('li');
            var items = document.querySelectorAll('.item');
            // for循环绑定点击事件
            for (var i = 0; i < lis.length; i++) {
                lis[i].setAttribute('index', i); // 开始给5个小li 设置索引号 
    
                lis[i].onclick = function() {
                    // 1. 上的模块选项卡,点击某一个,当前这一个底色会是红色,其余不变(排他思想) 修改类名的方式
                    // 干掉所有人 其余的li清除 class 这个类
                    for (var i = 0; i < lis.length; i++) {
                        lis[i].className = '';
                    }
                    this.className = 'current'; // 留下我自己 
    
                    // 2. 下面的显示内容模块
                    var index = this.getAttribute('index');
                    console.log(index);
                    // 干掉所有人 让其余的item 这些div 隐藏
                    for (var i = 0; i < items.length; i++) {
                        items[i].style.display = 'none';
                    }
    
                    items[index].style.display = 'block'; // 留下我自己 让对应的item 显示出来
                }
            }
    
            // 优化1:使用let
            for (let i = 0; i < lis.length; i++) {
                lis[i].onclick = function() {
                    for (var j = 0; j < lis.length; j++) {
                        lis[j].className = '';
                    }
                    this.className = 'current';
    
                    for (var k = 0; k < items.length; k++) {
                        items[k].style.display = 'none';
                    }
                    items[i].style.display = 'block';
                }
            }
    
            // 进一步优化
            for (let i = 0; i < lis.length; i++) {
                lis[i].onclick = function() {
                    for (let j = 0; j < lis.length; j++) {
                        lis[j].className = ''
                        items[j].style.display = 'none'
                    }
                    this.className = 'current'
                    items[i].style.display = 'block'
                }
            }
        </script>
    </body>
    
    </html>
    

    1.5.5 H5自定义属性

    自定义属性目的:为了保存并使用数据。有些数据可以保存到页面中而不用保存到数据库中。

    自定义属性获取:可以通过 getAttribute(‘属性’) 获取 。

    但是有些自定义属性很容易引起歧义,不容易判断是元素的内置属性还是自定义属性。

    H5给我们新增了自定义属性。

    1、设置H5自定义属性

    (1)H5规定自定义属性data-开头做为属性名并且赋值。

    比如 :

    (2)使用 JS 设置

    比如:element.setAttribute(‘data-index’, 2)


    2、获取H5自定义属性
    (1)兼容性获取: element.getAttribute(‘data-index’);
    (2)H5新增: element.dataset.index 或者 element.dataset[‘index’], ie 11才开始支持

    dataset 是一个集合【字面量对象】,里面存放了所有以data开头的自定义属性。

        <div getTime="20" data-index="2" data-list-name="andy"></div>
        <script>
            var div = document.querySelector('div');
            // console.log(div.getTime);
            console.log(div.getAttribute('getTime'));
            div.setAttribute('data-time', 20);
            console.log(div.getAttribute('data-index'));
            console.log(div.getAttribute('data-list-name'));
            // h5新增的获取自定义属性的方法 它只能获取data-开头的
            // dataset 是一个集合里面存放了所有以data开头的自定义属性
            console.log(div.dataset);
            console.log(div.dataset.index);
            console.log(div.dataset['index']);
            // 如果自定义属性里面有多个-链接的单词,我们获取的时候采取 驼峰命名法
            console.log(div.dataset.listName);
            console.log(div.dataset['listName']);
        </script>
    
  • 相关阅读:
    机器学习框架之sklearn简介
    ubuntu 16.04下使用 python pip的安装问题。
    ubuntu 16.04 搭建git小型服务器
    使用config 来管理ssh的会话
    【linux】su、sudo、sudo su、sudo -i的用法和区别
    【python】确保文件写入结束
    【python】描述符descriptor
    【python】类(资料+疑惑)
    【pymongo】mongodb cursor id not valid error
    【python】继承关系和isinstance
  • 原文地址:https://www.cnblogs.com/jianjie/p/12170488.html
Copyright © 2011-2022 走看看