时间:2021-05-26
一、'表亲戚':attribute和property
为什么称attribute和property为'表亲戚'呢?因为他们既有共同处,也有不同点.
attribute 是 dom 元素在文档中作为 html 标签拥有的属性;
property 是 dom 元素在 js 中作为对象拥有的属性。
从定义上可以看出:
二、 两者输出形式
1、分别打印两个值
打印attribute属性
//html<div class="divClass" id="divId" ></div>//jswindow.onload = function(){ var divId = document.getElementById('divId'); console.log(divId.attributes);}可以看见attributes对应的值,我们打印一下:
console.log(divId.attributes[0]); //打印 class="divClass"console.log(divId.attributes.class) //打印 class="divClass"console.log(divId.getAttribute('class')) //打印divClassconsole.log(divId.getAttribute('id')) //打印divId发现上面两组值是相等的.
虽然都可以取值,但《js高级程序设计》中提到,为了方便操作,建议大家用setAttribute()和getAttribute()来操作即可。
打印property
html自带的dom属性会自动转换成property,但是自定义的属性没有这个'权利'
直接把div标签当作对象,用'.'输出即是property属性
但是注意!property是不能输出自定义属性的
<div class="divClass" id="divId" addUserDefine="zidingyi"></div>console.log(divId.class); //打印 divClassconsole.log(divId.addUserDefine) //打印 undefined打开Elements的properties可以看到,dom存在的属性,property同样继承了,而addUserDefine却没有出现在property中
property:
var obj = {};Object.defineProperty(obj,'name',{ value:'Property'})console.log(obj.name) //打印 Property三、用例子解析两者赋值
如果我们修改了property的值
//html<input value="initValue" id="ipt"/>//jswindow.onload = function(){ var ipt = document.getElementById('ipt'); ipt.value = 'changeValue' console.log(ipt.value); console.log(ipt.getAttribute('value'));}猜一下结果??
答案是:
console.log(ipt.value); //changeValueconsole.log(ipt.getAttribute('value')); //initValue我们再来看看input的值
难以置信?
我们再来看看从修改attribute入手
//html<input value="initValue" id="ipt"/>//jswindow.onload = function(){ var ipt = document.getElementById('ipt'); ipt.setAttribute('value','changeValue') console.log(ipt.value); console.log(ipt.getAttribute('value'));}输出:
console.log(ipt.value); //changeValueconsole.log(ipt.getAttribute('value')); //changeValue总结如下:
1.property能够从attribute中得到同步;
2.attribute不会同步property上的值;
再啰嗦一句:
对属性Property可以赋任何类型的值,而对特性Attribute只能赋值字符串!
小结
分析了这么多,对property和attribute的区别理解也更深了,在这里总结一下:
创建
数据绑定
使用
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
attribute与propertyattribute和property都可以翻译为属性,为了以示区别,通常把这两个单词翻译为属性与特性。ClickHere上面
data有什么作用?在我们平时js编码过程中,我们经常会向DOM元素中添加各种自定义属性,这样有一个弊端。 1、假设我们在DOM元素中添加了一个属性,这个属性
DOM添加元素,使用节点属性DOM添加元素,使用节点属性Item1[Ctrl+A全选注:引入外部Js需再刷新一下页面才能执行]一、DOM基础1.节点(node)
DOM元素的attribute和property很容易混倄在一起,分不清楚,两者是不同的东西,但是两者又联系紧密。很多新手朋友,也包括以前的我,经常会搞不清楚。
前言在之前的两篇博客中,我们详细探讨了JavaScriptOOP中的各种知识点(JSOOP基础与JS中This指向详解、成员属性、静态属性、原型属性与JS原型链