Javascript 如何使用insertBefore添加新元素?

Javascript 如何使用insertBefore添加新元素?,javascript,Javascript,我正在尝试向标记添加文本,但不断出现错误 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 = doc

我正在尝试向标记添加文本,但不断出现错误

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">
”;
战斗等级:20(311855484)+13144516


»; 部队准备就绪:100%
»; 法力:40/40; 地点:




HTML看起来像这样。这是源代码中关于第204行的第()行

编辑:

var append1=“

»;FSP总额:”; var append2=“
”比率:”; var fsptag=document.createElement('text'); fsptag.innerHTML=append1+fspRound+append2+ratiound//fspRound和ratiound是数字
然后当我使用它时:
getexp.appendChild(fsptag)附加文本(html?)在末尾创建,即
之后(html代码中的最后一行)。我希望它出现在5个标签之间(html代码的第8行)。 很抱歉耽搁了,我正试图自己解决。

创建一个由
标记\u name
定义的HTML元素。Afaik,只能出现在
的内部。您的目的是创建自定义HTML标记吗?如果是这样,您需要为它使用其他名称

将元素作为参数,而不是字符串。此外,当元素被追加后,它会从原始位置移动,即
appendChild
参数中使用的变量值变为
null
。这意味着,如果要插入新元素两次,则必须在再次插入之前重新创建它

在现代浏览器中,集合还包含空格和标记之间的新行,因此您可能需要重新计算的索引


编辑

在你编辑了你的文章之后,它更容易理解。我已经为你储存了一个简化的。也许你需要什么

小提琴中的基本代码如下所示:

var getexp = document.getElementsByTagName("td")[219];
var fsptag = document.createElement('div');
fsptag.innerHTML = append1 + fspRound + append2 + ratioRound;
getexp.insertBefore(fsptag, getexp.childNodes[10]);

HTML是什么样子的?你确定存在
childNodes[10]
吗?如果你在你的帖子中添加了确切的元素及其要插入的内容,并将其作为正确放置的注释添加到HTML代码中,这会很有帮助。@code guy不用担心延迟,请检查我答案中的提琴,也许这就是你所需要的。你说的“在更新的浏览器中”是什么意思?Afaik所有浏览器都会这样做,尽管空白节点解析在旧浏览器中不一致。@Bergi空白不包括在旧浏览器中的
childNodes
中,例如IE,非常感谢。工作完美。我想我终于明白了背后的逻辑。
var getexp = document.getElementsByTagName("td")[219];
var fsptag = document.createElement('div');
fsptag.innerHTML = append1 + fspRound + append2 + ratioRound;
getexp.insertBefore(fsptag, getexp.childNodes[10]);