当使用空元素标记时,Javascript lastChild调用返回兄弟

时间:2013-09-24 07:07:17

标签: javascript html

我有以下Javascript:

//Clear out container
var container = document.getElementById("buy");
while (container.lastChild)
{
    container.removeChild(container.lastChild);
}

并进一步向下,它运行的HTML片段:

<div id="buy" class="itemGroup" />

<canvas id="drawArea" width="200" height="200">
    Your browser does not support HTML5 Canvas.
</canvas>   

但是,Javascript代码会删除画布,除非buy div使用开始和结束标记,即

<div id="buy" class="itemGroup">
</div>

这是为什么?从XML的角度来看,我认为这两者是等价的吗?在Windows 7上使用Chrome 29.0.1547.76 m。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这不是一个比已经给出的评论更完整的答案,但我无法在你的帖子中添加评论。无论如何,有一些标签不能自动关闭而'div'就是其中之一 - 如果你想一想它实际上是有意义的。从语义上讲,如果没有任何内容,你为什么要进行“分裂”呢?

另一个棘手的问题是'剧本'。即使您链接到页面中的外部脚本文件,也无法使用

<script type="text/javascript" src="example.js" />

这只是行不通。另一个是'textarea'。这会使任何html无用之后呈现!

<textarea cols="5" rows="5" />

看看其他一些:http://xahlee.info/js/html5_non-closing_tag.html