当javascript创建对象(例如img标签)时,它没有结束标记.如何使W3C有效?

J.K*_*.Ko 2 html javascript

图像标记(<img src="" alt="" />),换行符标记(<br />)或水平规则标记(<hr />)在末尾有斜杠,表示自己为自闭标记.但是,当这些对象是由javascript创建的,并且我查看了源代码时,它们没有斜杠,使它们因W3C标准而无效.

我怎么能克服这个问题?

(我使用javascript原型库)

bob*_*nce 6

你是如何看待"来源"的?JavaScript创建的元素不会出现在"查看源代码"中.你在说什么innerHTML?

如果是这样,那么您将获得的是Web浏览器对文档中DOM节点的序列化.在浏览器中,页面的HTML标记不是文档状态的最终存储.文档存储为Node对象的加载; 当这些对象被序列化回标记时,该标记可能看起来不像解析为获取文档的原始HTML页面标记.

所以无论哪个:

<img src="x" alt="y"/>
<img src="x" alt="y">
<img  alt = "y"    src="x">
img= document.createElement('img'); img.src= 'x'; img.alt= 'y';
Run Code Online (Sandbox Code Playgroud)

您用来创建HTMLImageElement节点,当您使用innerHTML浏览器对其进行序列化时,通常会生成相同的HTML标记.

如果浏览器处于本机XML模式(即因为页面被用作application/xhtml+html),那么该innerHTML值肯定将包含自动关闭语法<img/>.(在某些浏览器中,您也可能会看到其他XML内容,如命名空间.)

但是,如果,今天更有可能,你服务"HTML兼容XHTML"媒体类型下text/html,浏览器未实际使用XHTML可言,所以你当你访问得到老派,HTML innerHTML和你不会看到自我结束的/>形式.