2016-05-10 2 views
2

При условии ввода элемента в DOM он имеет свойство textContent вместе с value. Хорошо известно, что значение ввода - это то, что показано в текстовом поле, и этот элемент не может иметь никаких детей, то есть <input>something</input> все еще дает пустой ввод, за которым следует текстовый узел, но закрывающий тег полностью игнорируется. Но когда мы устанавливаем значение в textContent этого входа, это как-то выживает туда-обратно:Какова цель textContent во входном элементе?

input.textContent = 'something' 
console.log(input.textContent) // this works 

Кроме того, после установки свойства, вход появляются как имеющие дочерние элементы в инспекторе: Safari inspector screenshot after setting the text content

Возможно, это только я, но здесь я не вижу никакой логической последовательности. Было бы неплохо иметь Type Error при установке текстового содержимого на вход?

Есть ли какие-либо основания для настоящего поведения?

ответ

2

DOM не является HTML, но API для древовидных структур, которые соответствуют XML information set. Перевод <input>something</input> во входной элемент, за которым следует текстовый узел, является поведение анализатора HTML, а не поведение DOM.

Фактически, если вы используете XHTML, который служит как application/xhtml+xml, <input>something</input> станет элементом ввода с дочерним элементом текстового узла, то же самое, что и с использованием .textContent. Так что вполне нормально, что .textContent работает так, как он.

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