2016-05-10 49 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的工作方式完全正常。

相關問題