attribute和property的区别

1、attribute

  • 是html标签上的属性

  • attribute特性由HTML定义,所有出现在HTML标签内的描述节点都是attribute特性。

  • 类型只能是字符串
    访问:
    1、getAttribute()-取某一个属性。其他方法点这里

    var attr = document.getElementById('one').getAttribute('class') 
    

    2、 attributes所有DOM的属性集合,NamedNodeMap

    var attr = document.getElementById('one').attributes.clss
    //.class表示获取该对象中class属性
    

2、property

  • 属于DOM对象

  • 包含DOM节点属性(比如id,class),DOM的实质就是js中的对象

  • 可以是任意类型
    (▲!这里的property可以是任意类型指的是我们为DOM对象自定义添加的属性,对于DOM对象的原始属性,类似name属性,无论我们设置什么类型的值,最后返回的都是字符类型。)
    访问property
    直接用DOM获取,操作DOM的就是property

    var ele = document.getElementById('one')
    console.log(ele.id) //property中的id
    ele.id="two" //property  操作DOM使其id变为two
    
总结

除了value属性之外,非自定义的attribute和property有1:1映射关系, 当其中一个改变,另一个也会改变。value属性attribute可以影响property,反之则不行。(对于各自自定义的属性,它们之间就没有映射关系了,比如这个例子:

<div id="test" class="button" foo="1"></div>
document.getElementById('test').foo;    // return undefined 因为foo是一个自定义的attr特性

  !document===对DOM的操作,所以是property的属性
注:

1、 非自定义的attribute和property有1:1映射关系, 比如 id class title
▲!当我们通过property属性进行设置或获取class时,需要使用"className",因为在js中class是关键字。

2、 非自定义的property(attribute)改变的时候,其对应的attribute(property)在多数情况下也会改变。
例外情况见3

3、 当对应的property改变的时候,attribute特性value的值一直未默认值,并不会随之改变
▲!这条特性意味着我们平时在写业务的时候多数情况下使用property是正确的。当用户input输入更改的
时候,attribute-value值不会变化,即使js更改value(property),也不会使attribute变化。
4、 一些为Boolean类型的属性,如一些表单元素,attribute,property的值不一样
attribute和property的访问

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值