【HTML】元素 自定义属性 设置与获取(两种方式-含data-*)

本文详细介绍了HTML中自定义属性的两种实现方式:完全自定义和data-*自定义属性。阐述了各自的使用方法及注意事项,如data-*属性的命名规则与获取方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍了两种 自定义属性 的方式

一:完全自定义

二:data-* 内置的自定义方式


1.自定义属性名

<body>
  <button desc="this is a button">Click me!</button>

  <script>
    var btn = document.querySelector('button')
    console.log(btn.getAttribute('desc')) // 获取属性值
    btn.setAttribute('tip', 'please click button') // 设置属性值
  </script>

</body>

img

2.data-*自定义属性名

!important 是 data, 不是date!! (错了好几遍了!!!!)

设置 data-* 自定义属性

使用 data-* 属性来嵌入自定义数据:

  • 实例–直接写在元素身上
//实例 one
<ul>
<li data-animal-type="鸟类">喜鹊</li>
<li data-animal-type="鱼类">金枪鱼</li> 
<li data-animal-type="蜘蛛">蝇虎</li> 
</ul>

//实例--- 通过data内置Api设置
- `el.dataset.name='value'`

eg
<body>
    <button data-desc="this is a button" id="btn1">Click me!</button>
    <!-- 注意 data-* 自定义属性 变量 使用双驼峰命名 data-descTwo (不建议使用!!!) -->
    <!-- ⭐ 获取时就要注意一点区别,所有双驼峰的大写都会改为小写! -->
    <button data-descTwo="this is a button" id="btn2">Click me2!</button>

    <script>
        var btn1 = document.querySelector('#btn1')
        var btn2 = document.querySelector('#btn2')
        //
        console.log(btn1.dataset.desc) // ⭐⭐⭐⭐⭐获取自定义属性值

        // ⭐⭐⭐⭐⭐获取自定义属性值(双驼峰自定义变量)
        // 双驼峰变量的值 所有双驼峰的变量中的大写都会改为小写!!!!
        console.log(btn2.dataset.desctwo) 


        console.log(btn1.dataset.tip)
        btn1.dataset.tip = 'please click button' // 设置属性值
        console.log(btn1.dataset.tip)
    </script>
</body>

获取 data-* 自定义属性

  • 方法一: el.dataset (查看所有的 该元素的 data-* 的自定义属性值)

  • eg
    console.log(el.dataset)

  • 方法二: el.dataset.自定义属性名 (查看 该元素的 data-自定义属性名 的值)

    • 注意: 使用双驼峰命名(不建议-双驼峰命名)
    • 若果使用了,注意使用dataset获取时 所有双驼峰的变量中的大写都会改为小写!!!!
  • eg

  <button data-desc="this is a button" id="btn1">Click me!</button>
  <!-- 注意 data-* 自定义属性 变量 使用双驼峰命名 data-descTwo -->
  <!-- ⭐ 获取时就要注意一点区别,所有双驼峰的大写都会改为小写! -->
  <button data-descTwo="this is a button" id="btn2">Click me2!</button>
  console.log(btn1.dataset.desc) // ⭐⭐⭐⭐⭐获取自定义属性值
  // ⭐⭐⭐⭐⭐获取自定义属性值(双驼峰自定义变量)
  // 双驼峰变量的值 所有双驼峰的变量中的大写都会改为小写!!!!
  console.log(btn2.dataset.desctwo) 


拓展

所有主流浏览器都支持 data-* 属性。

定义和用法

data-* 属性用于存储页面或应用程序的私有自定义数据。

data-* 属性赋予我们在所有 HTML 元素上嵌入自定义 data 属性的能力。

存储的(自定义)数据能够被页面的 JavaScript 中利用,以创建更好的用户体验(不进行 Ajax 调用或服务器端数据库查询)。

data-* 属性包括两部分:

- 属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至少一个字符
- 属性值可以是任意字符串

**注释:**用户代理会完全忽略前缀为 "data-" 的自定义属性。 

这种方式需要在自定义属性名前面加上data-,获取/赋值都需要通过dataset,这种方式操作更为简单,*所有data-属性都存放在dataset中

<think>好的,我需要回答用户关于如何用JavaScript获取元素自定义属性model-id的问题。首先,用户提到了“model-id”,这是一个自定义属性,通常以data-开头,但用户这里用的是model-id,可能不符合标准命名。不过根据HTML5规范,自定义属性应该使用data-前缀,所以用户可能需要调整属性名,或者使用其他方法获取。 接下来,用户提供的引用资料里提到两种方法:getAttribute()和dataset。引用1中的例子是data-action和data-id,所以用户可能需要知道如果属性名是model-id,应该如何处理。不过,如果用户坚持使用model-id而不是data-model-id,可能需要使用getAttribute("model-id"),因为dataset只支持data-前缀的属性。 我应该先说明标准做法是使用data-前缀,然后给出两种方法。如果用户确实无法修改属性名,就解释如何用getAttribute获取非标准属性。同时,要提醒用户遵循HTML5规范,使用data-*格式以便dataset的支持。 然后,需要给出具体的代码示例,比如通过getAttribute("model-id"),或者如果属性data-model-id,可以用dataset.modelId。同时,注意属性名在dataset中的转换规则,比如连字符转驼峰。 最后,生成相关问题,比如如何设置自定义属性,或者如何处理非标准属性等。</think>在JavaScript获取自定义属性`model-id`可以通过以下两种方式实现: ### 1. 使用`getAttribute()`方法 如果属性名是**非标准**的(未使用`data-`前缀),可以通过`getAttribute()`直接获取: ```javascript const element = document.querySelector('#targetElement'); const modelId = element.getAttribute('model-id'); console.log(modelId); // 输出属性值 ``` ### 2. 标准`data-*`属性的推荐做法 根据HTML5规范,建议将自定义属性命名为`data-*`格式(如`data-model-id`),此时可通过更简洁的`dataset`属性获取: ```html <button id="btn" data-model-id="2023">按钮</button> ``` ```javascript const btn = document.querySelector('#btn'); // 通过dataset获取(注意驼峰命名转换) console.log(btn.dataset.modelId); // 输出 "2023" ``` ### 关键区别说明 | 方法 | 适用场景 | 命名规则 | |--------------------|---------------------------|---------------------| | `getAttribute()` | 任意属性名(包括非标准) | 原样匹配 | | `dataset` | 标准`data-*`属性 | 连字符转驼峰[^1] | ### 建议 推荐遵循HTML5的`data-*`命名规范,既能通过`dataset`安全访问,也避免其他属性冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值