2016-05-10 48 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

也许这只是我,但我在这里看不到任何逻辑一致性。将文本内容设置为输入时出现类型错误不是很好吗?

现在的行为背后有什么推理吗?

回答

2

DOM不是HTML,但树结构符合XML information set<input>something</input>翻译成输入元素后跟文本节点的是HTML解析器的行为,而不是DOM的行为。

实际上,如果使用XHTML,则作为application/xhtml+xml<input>something</input>将成为带有文本节点子元素的输入元素,与使用.textContent相同。所以.textContent的工作方式完全正常。

相关问题