1

我已经有了一个非常复杂的 DOM 结构,我想消除未终止的图像元素导致问题的可能性。

看最简单的情况:

var prettyPicture = document.createElement("img");
//Add properties...
container.appendChild(prettyPicture );

工作正常,但是当我检查 dom 时,我看到 img 元素没有终止斜杠,例如<img/>

<img id="iamge-6816177" src="_site/images/detail/6816177.png">

简单布局视图中没有问题,但是当我查看包含大量这些元素的视图时,随机元素,甚至相同父节点中的相似图像都不会呈现,尽管它们的节点位于 dom 检查器中。缺少终止会导致树出现任何问题吗?

4

4 回答 4

3

元素的结束标记img完全是可选的——这不会在任何浏览器中给您带来问题。事实上,在 HTML5 中,您现在根本不应该包含/>inimg元素。

此外,您在检查 DOM 时看到的只是检查员如何选择显示没有结束标记的元素 - 您可以确定createElement()appendChild()生成有效的 HTML,因为您直接使用 DOM 而不是为浏览器解析为 DOM 对象。

于 2012-11-08T18:39:06.300 回答
1

如果您担心

<img id="iamge-6816177" src="_site/images/detail/6816177.png">

代替

<img id="iamge-6816177" src="_site/images/detail/6816177.png"/>

那么就不用担心了:痛苦的 XHTML 时代已经结束,HTML5 确认您不应该编写 XML 样式的自闭合标签。

规格

void 元素只有一个开始标签;不得为 void 元素指定结束标记。

[...]

虚空元素

area, base, br, col, command, embed, hr, img, input, keygen, link, meta, param, source, track, wbr

用结束标签使代码混乱是不好的做法。HTML 不是 XHTML。

于 2012-11-08T18:39:46.157 回答
0

来自http://www.w3schools.com/tags/tag_IMG.asp

在 HTML 中,<img> 标签没有结束标签。

在 XHTML 中,<img>标签必须正确关闭。

在所有情况下,浏览器都不会关心。

于 2012-11-08T18:40:04.053 回答
0

不,这不应该引起任何问题。我会忽略它,因为这不会损害 w3.org 的合规性,因为 DOM 元素是动态生成的。

于 2012-11-08T18:42:44.103 回答