首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未捕获NotFoundError:未能在“”node“”上执行“”insertBefore“”:要在其前插入新节点的节点不是此节点的子节点

未捕获NotFoundError:未能在“”node“”上执行“”insertBefore“”:要在其前插入新节点的节点不是此节点的子节点
EN

Stack Overflow用户
提问于 2014-05-01 11:37:33
回答 2查看 98.1K关注 0票数 49

我对Javascript有一个问题。我收到这个错误消息:

未捕获NotFoundError:未能对“”node“”执行“”insertBefore“”:要在其前插入新节点的节点不是此节点的子节点。“”

Javascript:

var vidCounter = 0;
    vidCounter++;
var originalDiv;
var newVideo = document.createElement("video");
    newVideo.setAttribute("name", vidCounter);
    newVideo.setAttribute("autoplay", "true");
    originalDiv = document.getElementById("othersarea");
    document.body.insertBefore(newVideo, originalDiv); 

它试图在名为othersarea的div下添加一个<video>标记。

<div id="remoteVideos">
    <div class="title">
        <h2>Others</h2>
    </div>
    <div id="othersarea">
    </div>
</div>

我该如何解决这个问题?

我还想在我的新视频标签上运行attachMediaStream([VIDEO TAG HERE HOW?], event.stream);

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-01 11:44:50

您必须在之前插入的元素的父元素上调用insertBeforedocument.body不是父对象,它在DOM层次结构中的位置很高。

要在DIV之后插入,必须在其下一个同级之前插入。

var parentDiv = document.getElementById("remoteVideos");
parentDiv.insertBefore(newVideo, originalDiv.nextSibling);

请参阅MDN中的示例

票数 42
EN

Stack Overflow用户

发布于 2015-06-27 22:30:51

尝试使用parentNode

originalDiv.parentNode.insertBefore(newVideo, originalDiv); 

这将在originalDiv前面直接插入newVideo。

原因是node.insertBefore(newNode, existingNode)使用node作为对existingNode周围元素的引用。

参考:http://www.w3schools.com/jsref/met_node_insertbefore.asp

这也是谷歌分析所做的:http://www.stevesouders.com/blog/2010/05/11/appendchild-vs-insertbefore/

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23401641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档