.setAttribute与.attribute之间发生了什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (59)

使用简单javascript来设置一个值input。我正在使用多个方法,看起来是相同的,但结果不同。这里是一个例子:

HTML:

<input name="testinput" value="" type="text" />

使用Javascript:

var input = document.getElementByTagName('input')[0];
input.value = "5"

console.log(input.value) // returns "5"
console.log(input.getAttribute("value")) // returns ""

当然,功能如果在使用该setAttribute()功能时反转。然而,当表单提交时,他们都会给出input=5结果。

分离这两个属性有什么意义?.value存储不同于.getAttribute("value")

提问于
用户回答回答于

input.value是点符号,它设置输入对象的value 属性

它不会更新任何属性,因此试图获取具有相同名称的属性将不会返回更新的值。

如果由于某种原因你必须更新属性:

input.setAttribute('value', 'new_value');

HTML中的一个属性是开始和结束括号内的键/值对,如in

<div attribute="attribute_value"></div>

在许多情况下,这些属性将设置基础属性的初始值,并且该属性是一个带有值的命名键,该值附加到元素的内部模型,这是我们通过javascript访问的内容,持有模型的对象和元素的数据。

更改任何对象的键或值不会更改HTML,只会更改元素的内部表示形式,即对象。但是,更改HTML属性在某些情况下会更改元素的对象表示形式。

用户回答回答于

这是一个(部分)属性列表及其相应的属性:

element  | attribute | property
---------+-----------+----------------
option   | selected  | defaultSelected (bool)
label    | for       | htmlFor
input    | checked   | defaultChecked (bool)
select   | multiple  | multiple (bool)
li       | value     | value (int)

正如你所看到的,虽然属性总是字符串,但相应的属性可能是其他类型。

扫码关注云+社区

领取腾讯云代金券