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>
    
  • 相关阅读:
    Linq聚合操作之Aggregate,Count,Sum,Distinct源码分析
    Linq分区操作之Skip,SkipWhile,Take,TakeWhile源码分析
    Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析
    Linq基础操作之Select,Where,OrderBy,ThenBy源码分析
    PAT 1152 Google Recruitment
    PAT 1092 To Buy or Not to Buy
    PAT 1081 Rational Sum
    PAT 1084 Broken Keyboard
    PAT 1077 Kuchiguse
    PAT 1073 Scientific Notation
  • 原文地址:https://www.cnblogs.com/jianjie/p/12170488.html
Copyright © 2011-2022 走看看