HTML输入标记语法

时间:2014-12-15 19:56:04

标签: html forms

我觉得这可能已经在SO上得到了解答,但我找不到类似的问题。 一些更有经验的程序员告诉我,以下是不正确的语法:

<input type=...> Name </input>

以下是正确的语法:

<input type=..../>

我从来不知道这一点,我总是使用第一个片段,从未遇到任何我所知道的问题。有人可以解释为什么第一个是不正确的,为什么它仍然有效?它是由浏览器获救,还是只是一个样式问题?关于上述语法的任何解释都是可以接受的,因为下次我被要求编写HTML代码时,我不想冒险看起来像菜鸟。

4 个答案:

答案 0 :(得分:6)

  

有人可以解释为什么第一个不正确

不允许输入元素具有子节点,输入的所有内容都由其属性描述。要将标签与输入use a <label> element相关联。

  

为什么它仍然有效?

浏览器旨在应对不良输入。他们忽略了未打开的元素的结束标记。

答案 1 :(得分:2)

输入标记基本上称为 void elements ,即它们不会被设计为包含文本或其他元素,因此不需要结束标记。

实际上,有效性取决于您声明的 doctype 。 在此上下文中,/> is valid with HTML 5 and XHTML doctypes对HTML 4.01 doctypes.

无效

答案 2 :(得分:1)

浏览器非常宽容,但你的朋友是对的,语法错误。输入元素不应包含内容。有很多关于此的资源,其中之一是w3schools,其中说:

  

注意: <input>元素为空,它只包含属性。

     

提示:使用<label>元素定义元素的标签。

您还可以在线找到验证工具,验证您的网页并向您报告任何问题:W3 validator。在发布页面之前验证页面是非常值得的。即使浏览器是宽容的并且会尝试尽可能好地显示页面,但像您这样的错误会使页面无效并增加页面呈现错误或理论上 - 根本不会 - 的风险。

在这种特殊情况下,浏览器可能会选择在输入之前或之后,输入内部(不太可能)显示文本,或者根本不显示。通过使HTML文档有效,可以降低意外惊喜的风险。

答案 3 :(得分:1)

HTML specification about the input element说:

  

内容模型:
   - 空。

  

在text / html中标记遗漏:
   - 无结束标记

这意味着该元素没有任何内容,也没有任何结尾标记。

在HTML中,您可以像这样编写标记:

<input type= ... >

在XHTML中,标记遵循XML标准,因此没有内容的标记是自闭的:

<input type= ... />

在HTML5中,无论哪种写作方式都有效。

代码仍然有效的原因是浏览器试图充分利用无效代码。额外的</input>代码不会阻止任何工作,浏览器会忽略它。浏览器无法理解它应该是什么,或者浏览器供应商预期该特定错误并且浏览器知道忽略它。