2012-07-20 54 views
0

下面的代码片段:的DOMParser删除节点不工作

var tmpl = "<book><auth> </auth> <price> </price> </book>"; 
var bkTmpl = parser.parseFromString(tmpl,'text/xml'); 
var bk = bkTmpl.cloneNode(); 

,我取出孩子“价格”,如下。无论Try1 & Try2不工作

Try1:

var bkprice = tmpl.getElementsByTagName('price')[0]; 
bkTmpl .documentElement.removeChild(bkprice); 

Try2

var bkprice = tmpl.getElementsByTagName('price'); 
bkTmpl.documentElement.removeChild(bkprice); 

对于Try1它抛出错误=> “节点未找到”

对于Try2它给=> 无法转换JavaS ... DOMElement.removeChild]

Google很少的选择,但我只看到removeChild删除它。但是,当我使用document.getElementById &使用removeChild函数它不抱怨。只有原因我正在使用js变量(var tmpl),因为我想使用xml片段作为javascript的一部分,将来可以更改为ajax调用&因此不希望成为HTML的一部分。我看到萤火虫两个Try1 & Try2“价格”元素填充

+0

什么是你的'tw'变量? – mabbas 2012-07-20 17:31:06

+0

纠正了错字,它是tmpl不tw ...我现在可以解决使用jquery $(bkprice).remove()&不知道它是如何做到现在,但将挖掘它..但是我想做的没有jQuery的,因为它是XML如果可以用普通的旧方法它会很好 – user593029 2012-07-20 19:37:30

回答

0

所有你需要做的就是替换这一行:

var bkprice = tmpl.getElementsByTagName('price')[0]; 
bkTmpl .documentElement.removeChild(bkprice); 

通过

var bkprice = bkTmpl.getElementsByTagName('price')[0]; 
bkTmpl .documentElement.removeChild(bkprice); 

getElementByTagName是bkTmpl的方法而不是tmpl。

这是一个example