<a href="#" id="777"></a>
a.id="777"
Attribute 及 Property 虽然在英文上是两个不同的词,但中文同样都翻译成属性。
究竟两者到底有甚麽差异呢?
在探讨这个问题前,先来看看甚麽是 DOM 吧。
DOM 主要是用来把 HTML 文件的元素变成物件,存取後拿来 JS 里使用。
<h1 id = "title">学会React<h1>
<p class = "text">年薪百万<p>
像是上面的范例在 JS 可以透过 document.querySelector 或是 document.getElementById 等方法抓取到 HTML 的元素拿到 JS 里操作。
只要是 DOM 里的物件都会有以下这些函式可以使用:
(如常见的 document.querySelector() 或是 EventTarget.addEventListener() 都是这边提供的)。
类似生物分类表,用来分类元素,元素当中 html 在最上层,下层则有 head、body 等元素,依阶层慢慢分类下去。
现在回到 Attribute 及 Property。
当浏览器在读取页面时,他会解析 HTML 并产生 DOM 物件。
对於大部分的节点,HTML 的 Attribute 都会自动被转换成 DOM 物件的 Property。
<body id = "title">
会被转换成:
body.id="title"
操作 properties 跟操作 JS 的物件及函式是很像的:
这时候 data 属性就可以派上用场了,在 HTML 以 data- 开头的可以在 JS 里面用 dataset 拿到。
<div id="user" data-id="777" data-user="kirito">帮我撑10秒</div>
在 JS 可以用 dataset property 拿到。
const Beater = document.querySelector("#user");
Beater.id === "user"
Beater.dataset.id === "777"
Beater.dataset.user === "kirito"
参考:
[1]MDN:DOM
[2]wiki:DOM Tree
[3]Web开发学习笔记11 — DOM、Attribute与Property的差异
[4]Attributes and properties
[5]HTMLElement.dataset
>>: day19 : redisDB keyDB on K8S (上)
GeoJSON 是一种基於 JSON 的地理空间数据交换格式,相关定义可参考 RFC 7946,一个...
看完这篇文章你会得到的成果图 今天我们要延伸昨天的概念,开始来讲解我们如何设计 controller...
如昨天预告的一样,今天来介绍元件化开发的技术背景,它是什麽、为什麽重要,最後再讲一下元件的开发流程...
今天先跟大家说明在我的学习过程中做出的一个小小专题,这个专题在当初还有跟三个同学共同完成,那就先说明...
上一篇文章介绍了Unity AR(Android)的建置环境,本篇文章会简单介绍开发此款手游的主要A...