如果我给输入标签赋值,它会有什么不同吗?

时间:2014-03-03 00:10:41

标签: html

使用空input属性定义的value标记之间的功能差异

<input name="firstname" type="text" placeholder="First Name" value=""/>

value刚刚省略的那个?

<input name="firstname" type="text" placeholder="First Name"/>

这对我来说只是一个干净的代码,如果他们不是真的需要,我很乐意停止使用value s,而是几乎每一年我都读过的每一篇表格教程包含了它们。

包括它们会产生负面影响吗?没有它们,我的应用似乎运行正常。

5 个答案:

答案 0 :(得分:1)

value中缺少input属性等同于value="",但直接访问属性的代码(而不是元素节点的value属性除外) )。

HTML5 CR定义value attribute,以便当它不存在时,value属性(“IDL属性”)被设置为空字符串(最初和表单重置)。这准确地反映了浏览器的行为。

因此,考虑

<input id=a>
<input id=b value="">

它们是等价的,document.getElementById('a').value是空字符串,就像'b'一样。但是document.getElementById('a').getAttribute('value')null对象,而不是空字符串。 null对象和空字符串是不同的值,即使它们在==比较中的行为方式相同。

因此,仅当存在通过getAttribute方法或attributes属性访问属性的JavaScript代码时,差异才有意义,这对于像value这样的属性来说并不常见。而且,即使这样,只有当代码以处理null和空字符串的方式使用属性时,差异才有意义。

答案 1 :(得分:0)

答案 2 :(得分:0)

对于'text'类型的输入标记,则value属性是可选的。所以(如果为空)放弃它。

答案 3 :(得分:0)

无论哪种方式,它都完全相同。一个将其设置为默认值(无):

<input name="firstname" type="text" placeholder="First Name"/>

而另一个直接将它设置为空:

<input name="firstname" type="text" placeholder="First Name" value=""/>

因此,这只是偏好。

答案 4 :(得分:0)

在某些非常古老/异国情调的用户代理中,如果没有input属性,value元素可能无法正常工作。但是,在大多数情况下,到目前为止,它只占用(某些)字节而实际上没有任何用处。