dataset和setAttribute

在项目开发中经常在js中使用setAttribute来设置自定义属性,最近发现dataSet用法跟setAttribute相似,下面来具体学习下他们的区别。

1、dataSet【自定义数据属性】


(1)HTMLElement.dataset 属性允许无论是在读取模式和写入模式下访问在 HTML或 DOM中的元素上设置的所有自定义数据属性(data-)集。
(2)所谓的data-实际上就是data-前缀加上自定义属性名;但是在获取或者添加自定义属性的时候要去掉前缀data-;
 

2、getAttribute和setAttribute

setAttribute() 方法为一个或一组元素添加指定的属性,并且为其赋指定的值。(主要针对自定义属性)

如果这个属性已经存在,仅仅设置或是修改属性值。

getAttribute() 方法返回元素上一个指定的属性值。

如果指定的属性值不存在,就返回 null 或是 ""(空字符串)。

3、getAttribute和setAttribute及dataset的区别?


1、共同点:dataset和setAttribute一样都是可以自定义属性,但dataset是偏向自定义的数据集的,可以类似于地址信息这些,就是说dataset是setAttribute一个子集,是更为确切一部分信息的集合。

2、不同点:命名上不同,dataset内只有带data-前缀的属性;

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>自定义属性</title>
    <style>
        [data-set-css]{
            background-color: #33CCFF;
            width: 200px;height: 200px;
        }
    </style>
</head>
<body>
    <!--data-index  data-spm   第一中设置自定义的方法 直接在元素便签上书写-->
    <div id="divName" data-uname="xiaoxiao" data-zhuiMeng="追梦" data-je-ffrey="jeffrey">点击我</div>
    <script>
        //获取divName
        var el = document.getElementById("divName");
        console.log(el.dataset);
        //添加一个自定义属性
        el.dataset.sex="女"
        //el.dataset.data-usex="cs" 错误写法
        //获取数据
        console.log('data-uanme',el.dataset.uname);
        //区分大小写 只识别小写
        console.log('data-zhuiMeng',el.dataset.zhuimeng);
        //连着的字符需要转换为驼峰命名
        console.log('data-je-ffrey',el.dataset.jeFfrey);

        el.dataset.setCss = "设置css样式";
        console.log('setCss',el.dataset['set-css']);
        //删除数据
        delete el.dataset.uname
        delete el.dataset['setCss']

        el.setAttribute('age','18');
        el.setAttribute('data-age','118');

        //getAttribute取值
        console.log(el.getAttribute('age'));
        console.log('data-age',el.getAttribute('data-age'));
        console.log('data-age',el.getAttribute('data.sex'));
    </script>
</body>


 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值