JS 中 DOM 元素的 attribute 和 property 属性

一、 attribute 和 property 简单理解

attribute 是 dom 元素在文档中作为 html 标签拥有的属性;

property 是 dom 元素在 js 中作为对象拥有的属性。

对于 html 的标准属性来说,attribute 和 property 是同步的,是会自动更新的
但是对于自定义的属性来说,他们是不同步的.(自定义属性不会自动添加到property)

二、attribute 和 property 输出形式

(1)attribute

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>attribute 和 property 区别</title>
  </head>
  <body>
    <div id="test" class="testClass" titleTest="titleTest"></div>
    <script>
      var divId = document.getElementById("test");
      console.log(divId.attributes);
      console.log(divId.getAttribute('id'))
      console.log(divId.getAttribute('class'))
      console.log(divId.getAttribute('titleTest'))
    </script>
  </body>
</html>

输出结果:

 (2) property

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>attribute 和 property 区别</title>
  </head>
  <body>
    <div id="test" class="testClass" titleTest="titleTest"></div>
    <script>
      var divId = document.getElementById("test");
      console.log(divId.id)
      console.log(divId.className)
      console.log(divId.titileTest)
    </script>
  </body>
</html>

输出结果:

 html自带的dom属性会自动转换成property,但是自定义的属性没有这个'权利'
直接把div标签当作对象,用'.'输出即是property属性
但是注意!property是不能输出自定义属性的

 三、attribute 和 property 赋值

(1)attribute 赋值

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>attribute 和 property 区别</title>
  </head>
  <body>
    <div id="test" class="testClass" titleTest="titleTest"></div>
    <script>
      var divId = document.getElementById("test");
      divId.setAttribute("id", "attribute赋值");
      console.log("property输出方式:", divId.id);
      console.log("attribut输出方式:", divId.getAttribute("id"));
    </script>
  </body>
</html>

输出结果:

 

 (2)property 赋值

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>attribute 和 property 区别</title>
  </head>
  <body>
    <div id="test" class="testClass" titleTest="titleTest"></div>
    <script>
      var divId = document.getElementById("test");
      divId.class = 'property赋值'
      console.log("property输出方式:", divId.class);
      console.log("attribut输出方式:", divId.getAttribute("class"));
    </script>
  </body>
</html>

输出结果:

 总结:1.property能够从attribute赋值后的值同步; 2.attribute不会同步property赋值后的值;

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值