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

Raj*_*amy 17 html javascript jquery

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

例如,

<input id="test" type="text" value="testing" />
Run Code Online (Sandbox Code Playgroud)

JS:

$("#test").val("hello");
console.log($("#test").val()); //hello
console.log($("#test").attr('value')); //testing
Run Code Online (Sandbox Code Playgroud)

但是在隐藏元素上做同样的事情时,结果却如下所示,

HTML:

<input id="test1" type="hidden" value="testing" />
Run Code Online (Sandbox Code Playgroud)

JS:

$("#test1").val("hello");
console.log($("#test1").val()); //hello
console.log($("#test1").attr('value')); //hello
Run Code Online (Sandbox Code Playgroud)

DEMO

如果我们通过使用设置该元素的值,则会忽略value属性.val().任何人都知道为什么会这样?包含此行为详细信息的相关链接会更有帮助.

Tus*_*har 3

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

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