为什么隐藏的输入元素的.attr('value')不能从html字符串返回原始值?

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

  • 回答 (1)
  • 关注 (0)
  • 查看 (41)

基本上当调用.attr("value")一个文本框时,它将返回它在标记中设置的值,而不是通过使用设置的值.val()

例如,

<input id="test" type="text" value="testing" />

JS:

$("#test").val("hello");
console.log($("#test").val()); //hello
console.log($("#test").attr('value')); //testing

但是在隐藏元素上做同样的事情时,结果与下图不同,

HTML:

<input id="test1" type="hidden" value="testing" />

JS:

$("#test1").val("hello");
console.log($("#test1").val()); //hello
console.log($("#test1").attr('value')); //hello

如果我们通过使用设置该元素的值,则值属性被忽略.val()。有人知道为什么会发生这种情况?

提问于
用户回答回答于

Hidden输入不是用户可编辑的,因此可能会发现它们的默认值和当前值相同。所以,.val().attr('value')是同一hidden元素

据我所知,value属性描述了元素的默认值,而不是当前值。当前值是你可以通过value属性访问的值(这是jQuery val()所做的)。

扫码关注云+社区

领取腾讯云代金券