2011-10-05 63 views
3

可能重複:
How to create xhtml elements with javascript
Creating a <br /> with javascript createElement?JavaScript方法`createElement`(潛在)生成無效XHTML

我與綱領性一代使用JavaScript,例如表格的工作:

document.createElement(); 
document.appendChild; 
inputExample.type = "text"; 
… 

但我意識到的JavaScript代自閉合[X]的HTML/XML元素是不適用的,即

document.createElement('input'); 

將導致<input>,不<input />

雖然頁面具有

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml">…</html> 

,並因此被解釋與MIME類型的text/html,因此無需語法符合XHTML瀏覽器擴展的一部分,我想知道創建JavaScript元素以生成有效的XHTML的一種方法。有沒有辦法做到這一點?

+3

可能的重複:[http://stackoverflow.com/questions/4654265/creating-a-br-with-javascript-createelement](http://stackoverflow.com/questions/4654265/creating-a-br- with-javascript-createelement) – Will

+1

出於好奇,你會介意爲什麼你需要生成XHTML嗎?通常情況下,您只會關心爲客戶端使用生成任何樣式的html,或者爲服務器生成恰到好處的「XML」XML。 – hugomg

+0

這不是該問題的重複,而是相反。這裏的OP想要從元素生成標記。鏈接的可能副本是相反的。 – RobG

回答

5

當您撥打createElement時,您正在創建一個DOM對象,並且沒有涉及標記。生成標記的唯一機制是innerHTMLouterHTML屬性,這些屬性已在HTML5中進行了一定程度的標準化。

這些屬性應該使用HTML文檔中的HTML fragment serialization algorithm或XML文檔中的XML fragment serialization algorithm來生成標記。也許該物業應該被稱爲innerMarkupouterMarkup

我不認爲有任何方法可以調用一個序列化程序或其他具體使用腳本(例如,從HTML文檔中調用XML序列化程序),儘管您可能能夠解析來自HTML序列化程序的瑣碎標記並將其轉變爲近似於XHTML的東西。

順便說一下,據我所知,沒有「XHTML5」這樣的東西。目前的HTML標準是版本4.01。 HTML5是一個可能永遠不會標準化的工作草案。還有一些XHTML 1.0和XHTML 1.1被用作文檔中的DOCTYPE,這些文檔幾乎總是以文本/ HTML的形式提供(因爲其他任何東西都是不明智的),因此被視爲HTML文檔。