2

我正在尝试向标签添加文本,但我不断收到错误消息

NOT_FOUND_ERR: DOM Exception 8
Error: An attempt was made to reference a Node in a context where it does not exist.

这是javascript:

var getexp = document.getElementsByTagName("td")[219];
few lines of code here...
var fsptag = document.createElement('text');
fsptag.innerHTML = append1 +fspRound +append2 +ratioRound;

var fsptext = fsptag.innerHTML;
fsptag.appendChild(fsptext);
getexp.insertBefore(fsptag,getexp.childNodes[10]);

我是新手(只有几天)。据我了解getexp.childNodes[10],应该是getexp. 它是一个子节点。这里的任何帮助将不胜感激。谢谢。

编辑:HTML

<td colspan=2>&nbsp;&raquo;&nbsp;
<b>Combat level: 20</b> (311855484)&nbsp;<font style='font-size:8px;color:#696156'>+13144516</font>
<BR><BR>&nbsp;&raquo;&nbsp;
<b>Troops ready:</b> 100% 
<BR>&nbsp;&raquo;&nbsp;
<b>Mana:</b> 40 / 40<BR>&nbsp;&raquo;&nbsp;
<b>Location:</b> <a href=map.php?cx=50&cy=50>Empire Capital</a>
<BR><BR><BR><BR><BR>
<center><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="460" height="54" id="showarmy" align="middle">

HTML 看起来像这样。它来自这里 ( http://www.lordswm.com/pl_info.php?id=2255 ) 在第 204 行的源代码中。

编辑:

var append1 = "<br><br>&nbsp;&raquo;&nbsp;<b>Total FSP: </b>";
var append2 = "<br>&nbsp;&raquo;&nbsp;<b>Ratio: </b>";
var fsptag = document.createElement('text');
fsptag.innerHTML = append1 +fspRound +append2 +ratioRound;       //fspRound & ratioRound are numbers

然后当我使用它时:getexp.appendChild(fsptag);附加的文本(html?)在最后创建,即在<object>(html代码的最后一行)之后。我希望它出现在 5 个<br>标签之间(html 代码的第 8 行)。抱歉耽搁了,我自己想弄清楚。

4

1 回答 1

3

createElement(tag_name)创建一个由tag_name. Afaik,<text>只能出现在<svg>. 您的目的是创建自定义 HTML 标记吗?如果是这样,您需要使用其他名称。

appendChild()元素作为参数,而不是字符串。同样,当一个元素被添加一次时,它会从它的原始位置移动,即appendChild's 参数中使用的变量的值变为null. 这意味着,如果您想插入一个新元素两次,则必须在再次插入之前重新创建它。

在现代浏览器中,该childNodes集合还包含标签之间的空格和换行符,因此您可能需要重新计算insertBefore().


编辑

编辑帖子后,它更容易理解。我为你存储了一个简化的小提琴。它可能会关闭您需要的东西?

小提琴中的基本代码是这样的:

var getexp = document.getElementsByTagName("td")[219];
var fsptag = document.createElement('div');
fsptag.innerHTML = append1 + fspRound + append2 + ratioRound;
getexp.insertBefore(fsptag, getexp.childNodes[10]);
于 2013-02-17T16:32:26.903 回答