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

时间:2015-09-01 18:41:01

标签: javascript jquery html

基本上在文本框中调用.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

DEMO

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

1 个答案:

答案 0 :(得分:3)

Hidden输入不是 用户可编辑 ,因此您可能会发现 默认值和当前值 对他们来说是一样的。因此,.val().attr('value')对于hidden元素

是相同的

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