You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML验证错误咨询:<li>元素不允许使用audio_url属性

解决
  • 自定义属性触发HTML验证错误的方案
  • 嗨,这个问题我碰到过好多次了——直接给<li>加自定义属性确实会触发HTML验证错误,毕竟HTML规范里只给<li>规定了type、value还有全局/事件属性,自定义的audio_url、image_url不在合法列表里。不过有几种完全合规的解决办法,给你列出来:

    1. 用HTML5标准的data-*自定义属性(最推荐)

    这是官方专门为存储自定义数据设计的方案,所有HTML元素都支持,完全符合验证标准。你只需要把属性名改成data-开头的形式,连字符分隔的名称会自动在JS的dataset里转换成驼峰式:

    <li data-audio-url="https://example.com/audio1.mp3" data-image-url="https://example.com/cover1.jpg">
      音频1
    </li>
    

    之后在JavaScript里获取这些数据也很方便:

    const listItem = document.querySelector('li');
    const audioUrl = listItem.dataset.audioUrl; // 获取data-audio-url的值
    const imageUrl = listItem.dataset.imageUrl; // 获取data-image-url的值
    

    2. 把数据放在<script type="application/json">标签里

    如果你的数据结构比较复杂(比如后续要加更多字段),或者不想用data属性,可以在<li>内部嵌套一个隐藏的JSON脚本标签:

    <li>
      音频1
      <script type="application/json" class="audio-playlist-data">
        {"audioUrl": "https://example.com/audio1.mp3", "imageUrl": "https://example.com/cover1.jpg"}
      </script>
    </li>
    

    然后在JS里解析这个JSON数据:

    const scriptTag = document.querySelector('.audio-playlist-data');
    const playlistData = JSON.parse(scriptTag.textContent);
    console.log(playlistData.audioUrl, playlistData.imageUrl);
    

    3. 用隐藏元素存储数据(适合简单场景)

    如果不想用data属性或JSON脚本,也可以在<li>里放带hidden属性的元素来存储数据,这种方式对一些老旧的JS环境兼容性更好:

    <li>
      音频1
      <span hidden class="audio-url">https://example.com/audio1.mp3</span>
      <span hidden class="image-url">https://example.com/cover1.jpg</span>
    </li>
    

    获取数据时直接读取元素的文本内容:

    const listItem = document.querySelector('li');
    const audioUrl = listItem.querySelector('.audio-url').textContent.trim();
    const imageUrl = listItem.querySelector('.image-url').textContent.trim();
    

    总结

    这三种方法里,data-*属性是最简洁、最符合HTML标准的方案,推荐优先使用。修改后再跑HTML验证,就不会再出现属性不合法的报错啦!

    内容的提问来源于stack exchange,提问作者philip-j

    相关产品推荐
    方舟 Agent Plan

    超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

    最近更新时间:2026.05.19 10:39:56