我对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);
。
发布于 2014-05-01 11:44:50
您必须在之前插入的元素的父元素上调用insertBefore
。document.body
不是父对象,它在DOM层次结构中的位置很高。
要在DIV之后插入,必须在其下一个同级之前插入。
var parentDiv = document.getElementById("remoteVideos");
parentDiv.insertBefore(newVideo, originalDiv.nextSibling);
请参阅MDN中的示例
发布于 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/
https://stackoverflow.com/questions/23401641
复制相似问题