尝试将svg从一个div移动到另一个div时,导致层次结构请求错误的原因是什么?

时间:2014-07-16 13:20:26

标签: javascript svg appendchild

我试图将一个svg从一个div移动到另一个div。 This stack question提供了我尝试过的解决方案。

document.getElementById("LightBoxDiv").appendChild(svgId+"V");

当我尝试这个时,我收到了一个层次结构请求错误。 This stack question提出了可能是原因的几件事。我不知道我有这些东西,但我不确定。 Bot我的div在body元素中并没有嵌套在另一个中,然而,在使用javascript动态创建之前,其中一个div只有几行。这是我用来创建div的脚本。

var lightboxdiv = document.createElement('div');
lightboxdiv.id = "LightBoxDiv";
document.body.appendChild(lightboxdiv);
document.getElementById("LightBoxDiv").style.display="block";
document.getElementById("LightBoxDiv").style.position="fixed";
document.getElementById("LightBoxDiv").style.overflow="hidden";
document.getElementById("LightBoxDiv").style.padding="5%";
document.getElementById("LightBoxDiv").style.top=0;
document.getElementById("LightBoxDiv").style.left=0;
document.getElementById("LightBoxDiv").style.width="100%";
document.getElementById("LightBoxDiv").style.height="100%";
document.getElementById("LightBoxDiv").style.background="white";
document.getElementById("LightBoxDiv").style.zIndex="1001";
document.getElementById("LightBoxDiv").setAttribute("class","dotouch");

document.getElementById("LightBoxDiv").appendChild(svgId+"V");

最后一行是抛出错误的那一行。知道我做了什么导致错误吗?我该怎么办呢?

谢谢, - christopher

3 个答案:

答案 0 :(得分:10)

您正在将jQuery代码与标准DOM API混合使用。

函数appendChild()需要DOM节点,而不是元素ID。尝试

var svg = document.getElementById(svgId+"V");
document.getElementById("LightBoxDiv").appendChild(svg);

答案 1 :(得分:0)

我遇到了同样的错误,只是我没有使用JQuery。 我发现的问题是,我试图从一个Div移到另一个Div的元素是不可见的(即,其样式显示='none')。

首先删除此样式,然后附加它,为我解决了这个问题。

答案 2 :(得分:-1)

document.getElementById("LightBoxDiv")  == lightboxdiv; 

为什么要用户浏览器12次来搜索已存储在变量中的文档ID中的元素?

lightboxdiv.style.display = ...; 
lightboxdiv.style.position = ...; 

我认为它会起作用