单标记DIV的document.getElementById失败

Tra*_*Guy 3 html javascript firefox

我在HTML页面上有2个DIV:

<div id="divDebug" />
<div id="divResult" />
Run Code Online (Sandbox Code Playgroud)

我有一个脚本可以访问Web服务并用数据填充它们:

document.getElementById("divDebug").innerHtml = rawResult;
document.getElementById("divResult").innerHtml = processResult(rawResult);
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

  1. 上面的代码在IE 8中运行良好
  2. 上面的代码有时可以使用,有时在Chrome 3中没有.
  3. 只有第一行在FF 3.51中有效.在使用FireBug进行测试后,我可以看到表达式的document.getElementById("divResult")计算结果为null.

经过多次试验和错误,我发现如果我将HTML代码更改为:

<div id="divDebug"></div>
<div id="divResult"></div>
Run Code Online (Sandbox Code Playgroud)

一切都适用于所有3个浏览器.

我的问题是:

  1. 为什么我必须关闭DIV才能使用它们?
  2. 这是一个JavaScript的东西,还是一个FF bug?
  3. 是否有任何其他HTML元素在未正确关闭时将无法使用?

谢谢!

cle*_*tus 7

<div/>基本上是关闭标签的XML方式.<div></div>是HTML(和XML).

您使用的DOCTYPE是什么?

C. HTML兼容性准则XHTML™1.0可扩展超文本标记语言(第二版):

C.3.元素最小化和空元素内容

给定内容模型不是EMPTY的元素的空实例(例如,空标题或段落)不使用最小化形式(例如,使用<p> </p>和不使用<p />).