首页 > 其他分享 >js 自定义数据属性

js 自定义数据属性

时间:2024-01-24 17:04:12浏览次数:23  
标签:定义数据 innerHTML dataset HTML div js data 属性

HTML5 允许给元素指定非标准的属性,但要使用前缀 data-以便告诉浏览器,这些属性既不包含 与渲染有关的信息,也不包含元素的语义信息。除了前缀,自定义属性对命名是没有限制的,data-后 面跟什么都可以。下面是一个例子:

<div id="myDiv" data-appId="12345" data-myname="Nicholas"></div>

定义了自定义数据属性后,可以通过元素的 dataset 属性来访问。dataset 属性是一个 DOMStringMap 的实例,包含一组键/值对映射。元素的每个 data-name 属性在 dataset 中都可以通 过 data-后面的字符串作为键来访问(例如,属性 data-myname、data-myName 可以通过 myname 访 问,但要注意 data-my-name、data-My-Name 要通过 myName 来访问)。下面是一个使用自定义数据 属性的例子:

// 本例中使用的方法仅用于示范
let div = document.getElementById("myDiv");
// 取得自定义数据属性的值
let appId = div.dataset.appId; let myName = div.dataset.myname;
// 设置自定义数据属性的值 div.dataset.appId = 23456; div.dataset.myname = "Michael";
// 有"myname"吗?
if (div.dataset.myname){
      console.log(`Hello, ${div.dataset.myname}`);
    }

自定义数据属性非常适合需要给元素附加某些数据的场景,比如链接追踪和在聚合应用程序中标识 页面的不同部分。另外,单页应用程序框架也非常多地使用了自定义数据属性。

插入标记

DOM 虽然已经为操纵节点提供了很多 API,但向文档中一次性插入大量 HTML 时还是比较麻烦。 相比先创建一堆节点,再把它们以正确的顺序连接起来,直接插入一个 HTML 字符串要简单(快速) 得多。HTML5 已经通过以下 DOM 扩展将这种能力标准化了。

1. innerHTML 属性

在读取 innerHTML 属性时,会返回元素所有后代的 HTML 字符串,包括元素、注释和文本节点。 而在写入 innerHTML 时,则会根据提供的字符串值以新的 DOM 子树替代元素中原来包含的所有节点。 比如下面的 HTML 代码:

<div id="content">
<p>This is a <strong>paragraph</strong> with a list following it.</p> <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
</ul> </div>

对于这里的

元素而言,其 innerHTML 属性会返回以下字符串:

<p>This is a <strong>paragraph</strong> with a list following it.</p> <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
</ul>

实际返回的文本内容会因浏览器而不同。IE 和 Opera 会把所有元素标签转换为大写,而 Safari、 Chrome 和 Firefox 则会按照文档源代码的格式返回,包含空格和缩进。因此不要指望不同浏览器的 innerHTML 会返回完全一样的值。 在写入模式下,赋给 innerHTML 属性的值会被解析为 DOM 子树,并替代元素之前的所有节点。 因为所赋的值默认为 HTML,所以其中的所有标签都会以浏览器处理 HTML 的方式转换为元素(同样, 转换结果也会因浏览器不同而不同)。如果赋值中不包含任何 HTML 标签,则直接生成一个文本节点, 如下所示:

div.innerHTML = "Hello world!";

因为浏览器会解析设置的值,所以给 innerHTML 设置包含 HTML 的字符串时,结果会大不一样。 16 来看下面的例子:

div.innerHTML = "Hello & welcome, <b>\"reader\"!</b>";

这个操作的结果相当于:

<div id="content">Hello & welcome, <b>"reader"!</b></div> 设置完 innerHTML,马上就可以像访问其他节点一样访问这些新节点。

标签:定义数据,innerHTML,dataset,HTML,div,js,data,属性
From: https://blog.51cto.com/u_16255561/9400055

相关文章

  • js 焦点管理
    HTML5增加了辅助DOM焦点管理的功能。首先是document.activeElement,始终包含当前拥有焦点的DOM元素。页面加载时,可以通过用户输入(按Tab键或代码中使用focus()方法)让某个元素自动获得焦点。例如:letbutton=document.getElementById("myButton");button.focus();......
  • js CSS 类扩展
    自HTML4被广泛采用以来,Web开发中一个主要的变化是class属性用得越来越多,其用处是为元素添加样式以及语义信息。自然地,JavaScript与CSS类的交互就增多了,包括动态修改类名,以及根据给定的一个或一组类名查询元素,等等。为了适应开发者和他们对class属性的认可,HTML5增加了......
  • js matches()
    matches()方法(在规范草案中称为matchesSelector())接收一个CSS选择符参数,如果元素匹配则该选择符返回true,否则返回false。例如:if(document.body.matches("body.page1")){//true}使用这个方法可以方便地检测某个元素会不会被querySelector()或querySelectorAll()方......
  • js DOM 扩展
    尽管DOMAPI已经相当不错,但仍然不断有标准或专有的扩展出现,以支持更多功能。2008年以前,大部分浏览器对DOM的扩展是专有的。此后,W3C开始着手将这些已成为事实标准的专有扩展编制成正式规范。本章所有内容已经得到市场占有率名列前茅的所有主流浏览器支持,除非特别说明。Java......
  • 无涯教程-CSS3 - 字体属性(Font)
    Web字体用于允许CSS中的字体,这些字体未在本地系统上安装。Sr.No.Font&Remark1TrueTypeFonts(TTF)TrueType是Apple和Microsoft在1980年代后期开发的轮廓字体标准,它成为Windows和MAC操作系统最常用的字体。2OpenTypeFonts(OTF)OpenType是Microsoft开发的可缩放计......
  • python创建json文件并换行
     在Python中,您可以使用内置的json 模块创建和操作JSON文件。以下是如何创建一个JSON文件的步骤:1、Json格式JSON数据的书写格式是键(名称)/值对。JSON值可以是:字符串(在双引号中)、数组(在中括号中)、数字(整数或浮点数)、逻辑值(true或false)、对象(在大括号中)、null。JSON......
  • [转]JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js
    原文地址:JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js_js计算精度问题-CSDN博客一、计算精度现象举例举例1、加法 举例2、减法 举例3、乘法 举例3、除法 二、JS为什么会有计算精度的问题JavaScript内部只有一种数字类型Number,也就是说,Java......
  • JS逆向实战27——pdd的anti_content 分析与逆向
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!本文已在微信公众号发布目标网站aHR0cHM6Ly9tb2JpbGUucGluZHVvZHVvLmNvbS8=任务获取商品列表接口......
  • 无涯教程-CSS3 - 渐变属性(Gradients)
    渐变显示两种或更多种颜色的组合,如下所示-线性渐变线性渐变用于以线性格式(如从上到下)排列两种或多种颜色。Toptobottom(从上到下)<html><head><style>#grad1{height:100px;background:-webkit-linear-gradient(pink,......
  • 在React中使用Bootstrap中的Modal并使用Js控制(非使用Bootstrap-React)
    在React中使用Bootstrap框架组件Render<buttonclassName='btnbtn-primarybtn-sm'onClick={()=>openModal()}>详细</button><divclassName="modalfade"id="info-modal"tabIndex={-1}aria-labelledby=""aria-h......