我在ie用svgviewer显示一个svg图形,然后想在服务器端用程序动态生成生成另外一个svg图形,并把这个图形合并到当前显示的图形中。  
我现在想想把新的svg图形用cloneNode方法取出来,添加到当前的图形中,结果出现“wrong  docuemnt”错误,但是把这个图形对象cloneNode添加到自己是没有问题的。  
请问究竟是方法错误还什么原因?这个问题该如何解决,由于新生成的svg可能很复杂,比较难用分析xml文件然后生成的方法解决。  
代码如下:  
//两个对象  
var  svgdocnew  =  document.svgMapnew.getSVGDocument();  
var  svgdocold  =  document.svgMapold.getSVGDocument();  
var  svgObjnew  ,svgObjold;  
//取得需要添加的对象,如果这个是在本来的,添加就成功,如果是其他的,就会出“wrong  document”错误  
//程序执行正确,但是添加到自己  
var  box=svgdocnew.getElementById("box");  
//想添加的其他的,不成功,这是两种情况  
//var  box=svgdocold.getElementById("box");  
//取得需要添加的对象  
svgObjnew  =  svgdocnew.getElementById("test1");  
//clone这个对象  
svgObjold=svgObjnew.cloneNode(true);  
//测试这个对象是否为空  
alert(svgObjold.getAttribute("r"));  
//更改这个对象的其中一个属性              
svgObjold.setAttribute("r","100");  
//添加,box是自己,就不会出错,如果是另外的,就出错?怎么办?,加svgObjold,svgObjnew  都是一样的问题,郁闷  
box.appendChild(svgObjold);  
//box.appendChild(svgObjnew);

解决方案 »

  1.   

    你去看看adobe公司的svg和javascript的示例,可以的。
    http://www.adobe.com/svg/indepth/faq.html
      

  2.   

    谢谢caiyajun512(小秀) ,我去看了一下,可惜还没有找大答案。动态用javascript生成svg的元素并加到svg是没有问题的,现在问题是动态添加另外一个svg文件,按理说可以直接解析svg,然后循环每个元素并添加,这样是没有问题的。可是太慢,而且把svg用dom解析然后再生成svg,多此一举。所以我想请教大家有没有更好的办法。