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> »
<b>Combat level: 20</b> (311855484) <font style='font-size:8px;color:#696156'>+13144516</font>
<BR><BR> »
<b>Troops ready:</b> 100%
<BR> »
<b>Mana:</b> 40 / 40<BR> »
<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]);