1

我正在使用这个 Javascript 命令将一个空的 div 替换为页面上另一个 div 的值。所以我在我的html中有这个:

<a href = "... some links that call the javascript ...">text link</a>
<div id="highlight">
</div>

<div id="1">
...some text
</div>

<div id="2">
... some text
</div>

脚本是

settext(newdiv) {
  // set top of page highlight to appropriate text
  var desc = document.getElementById('highlight');
  if (desc.hasChildNodes()) desc.removeChild(desc.lastChild);
  document.getElementById('highlight').appendChild(
    document.getElementById(newdiv));
  }

当我第一次用另一个 div 1、2、3 等替换“突出显示”div 时,该脚本可以正常工作)。因此,当我单击相应的超链接文本时,空白 div (id="highlight") 将填充下面相关 div 的内容(例如 div id="1")。

然后当我单击一个新链接时, div id="highlight" 的内容消失并被新的 div 文本替换。但是我第二次点击在“hightlight” div 为空白之前已被删除的 div。只有当我使用以前未点击的 div 时,它才会被替换。

当我查看 Firefox Web 控制台以查看 Javascript 错误时,它显示:

“组件返回失败代码:0X80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMHTMLDivElement.removeChild]”

由于某种原因,它似乎超出了界限。我怎样才能解决这个问题?

4

1 回答 1

0

我建议不要在节点级别修改 DOM,而是使用“innerHTML”来移动 div 内容。

于 2012-07-08T13:02:59.140 回答