属性和属性在HTML中有什么区别?

属性和属性在HTML中有什么区别?

在jQuery1.6.1中所做的更改之后,我一直试图在HTML中定义属性和属性之间的区别。

查看jQuery1.6.1发行说明(接近底部),似乎可以将HTML属性和属性分类如下:

  • 属性:所有这些都具有布尔值或UA计算值,如selectedIndex。

  • 属性:可以添加到HTML元素中的“属性”,该元素既不是布尔值,也不包含UA生成的值。

思想?


绝地无双
浏览 743回答 3
3回答

冉冉说

编写HTML源代码时,可以定义属性在HTML元素上。然后,一旦浏览器解析了您的代码,就会创建相应的DOM节点。此节点是一个对象,因此它具有特性.例如,这个HTML元素:<input&nbsp;type="text"&nbsp;value="Name:">有两个属性(type和value).一旦浏览器解析了这段代码,HTMLInputElement对象,该对象将包含数十个属性,如:Accept、AccessKey、Alignal、alt、Attributes、autoFocus、base URI、Check、子元素计数、子节点、子类、classList、className、clientHight等。对于给定的DOM节点对象,属性是该对象的属性,属性是attributes那个物体的属性。当为给定的HTML元素创建DOM节点时,它的许多属性都与具有相同或相似名称的属性相关,但并不是一对一的关系。例如,对于这个HTML元素:<input&nbsp;id="the-input"&nbsp;type="text"&nbsp;value="Name:">对应的DOM节点将具有id,type,和value财产(除其他外):这个id属性是反射性质为id属性:获取属性读取属性值,并设置属性写入属性值。id是纯反射属性,它不修改或限制值。这个type属性是反射性质为type属性:获取属性读取属性值,并设置属性写入属性值。type不是纯反射属性,因为它仅限于已知值(例如,输入的有效类型)。如果你有<input type="foo">,然后theInput.getAttribute("type")给你"foo"但theInput.type给你"text".相反,value属性不反映value属性。相反,这是电流值输入。当用户手动更改输入框的值时,value属性将反映此更改。所以如果用户输入"John"进入输入框,然后:theInput.value&nbsp;//&nbsp;returns&nbsp;"John"鉴于:theInput.getAttribute('value')&nbsp;//&nbsp;returns&nbsp;"Name:"这个value属性反映电流输入框中的文本内容,而value属性包含初始文本value属性来自HTML源代码。因此,如果您想知道文本框中当前的内容,请阅读该属性。但是,如果您想知道文本框的初始值是什么,请读取属性。或者您可以使用defaultValue属性,它是value属性:theInput.value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;returns&nbsp;"John"theInput.getAttribute('value')&nbsp; //&nbsp;returns&nbsp;"Name:"theInput.defaultValue&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;returns&nbsp;"Name:"有几个属性直接反映了它们的属性(rel,&nbsp;id),有些是直接反射,名称略有不同(htmlFor反映for属性,className反映class属性),其中许多属性反映了它们的属性,但有限制/修改(src,&nbsp;href,&nbsp;disabled,&nbsp;multiple等等。规格涵盖各种反射。

当年话下

答案已经解释了属性和属性是如何以不同的方式处理的,但我想指出的是疯狂这是。即使在某种程度上是规范。拥有一些属性是很疯狂的。ID,类,foo,bar)在DOM中只保留一种值,而保留一些属性(例如,选中,选定)保留两个值,即“加载时”的值和“动态状态”的值。(DOM不应该表示文件在最大程度上?)这是绝对必要的,两个输入字段,例如a文本和一个复选框&nbsp;行为举止完全相同..如果文本输入字段不保留单独的“加载时”值和“当前、动态”值,为什么要选中复选框?如果复选框中有两个值,则为查证属性,为什么它没有两个班级,等级和ID属性?如果希望更改文本*输入*字段,而您期望DOM(即“序列化表示”)发生更改,并反映此更改,您为什么不期望从输入类型域复选框在选中的属性上?对我来说,“这是一个布尔属性”的区别对我来说没有任何意义,或者至少不是一个充分的理由。
打开App,查看更多内容
随时随地看视频慕课网APP