2014-10-16 3 views
1

Почему входной тег в HTMLПочему входной тег в HTML <input/> вместо <input></input>

<input value="something"/> 

вместо

<input>something</input> 

Или почему в р тег не

<p value="something"/> 

вместо

<p>something</p> 
+0

Непонятно, что вы просите. –

+0

Это технически недействительно, хотя, вероятно, принято. [См. Здесь] (http://stackoverflow.com/a/3558200) для быстрого обзора. Любой тег, который действителен как «», является либо «тегом void», либо просто имеет только атрибуты, такие как 'input'. На самом деле,/является просто остатком от строгих xml дней. – nerdwaller

+0

Этот вопрос кажется не по теме, потому что речь идет о предпосылках для языковой конструкции, а не о практическом программировании. –

ответ

1

Именно так оно и было спроектировано. По какой-то причине было принято решение использовать атрибут для хранения значения. Я считаю, что это также преимущества, когда дело доходит до конечных и ведущих пробелов - проще в атрибуте. Стандартом с тегами является игнорирование пробела, что нежелательно в поле ввода, где вы хотите захватить весь текст. Другая проблема с тегом - это начало и конец тегов по нескольким строкам.

0

Эти два тега пытаются сделать принципиально разные вещи с их «значением».

A p тег - это средство разделения блока текста. Он и другие «закрывающие теги» (т. Е. Теги, которые имеют </tag>, например p), сообщают парсеру, что этот текст что-то означает. Принимая это во внимание, формат имеет смысл: синтаксический анализатор видит теги <p> и знает, что «все отсюда, пока я не вижу тег </p>, семантически абзац, действуйте соответствующим образом».

Тег input, однако, не пытается применить значение к любому тексту; тег - значение. С точки зрения парсера, видя, что тег <input /> говорит, что «замените это на элемент формы». Это основное поведение самозакрывающихся тегов: они не добавляют смысл в текст, они добавляют контент (из одной формы или другого) ко всему документу. Поэтому наличие закрывающего тега для input не имеет смысла; input не предоставляет дополнительного значения для любого текста, вместо этого в тексте говорится что-то значимое относительно элемента input. Следовательно, это атрибут.

0

Тег <input/> использовался вместо того, чтобы писать его открытые/закрытые теги из-за того, что на самом деле делает тег. Тег ввода не должен занимать какой-либо дочерний элемент, поэтому вам нужно написать больше? В отличие от <div><span> и <table> тегов, которые все еще могут содержать больше дочерних элементов, по сравнению с тегом <input>, который является автономным элементом, который по какой-то причине не нуждается. другим способом, браузеры также поддерживают писать так: <input type="text"></input>

0

Эти типы тегов называются автономные теги, которые не обертывают содержимое между открывающим и закрывающим тегами. например, В <h1>East</h1> У нас есть два тега. В автономных тегах содержимое вставляется в качестве значения атрибута value внутри открытого тега. Например, <input type="submit" value="Send" /> и перерыв <br /> теги.

Смежные вопросы