顶一下,好像jdom操作后 rows会变的

解决方案 »

  1.   

    传的是引用没错,但是rows = xmlDoc.getElementsByTagName("ROW");这个时候实际上生成了3个新的引用(指针空间?)指向3个item
    xmlDoc.documentElement.removeChild(row);这一句只是去掉了documentElement中对item(0)的引用,而rows中的引用还在,jvm因此没有回收item(0)。看看下面代码,也许有帮助。
    <SCRIPT>
    var xmlstr='<root><ROW f1="True" f2="1"/><ROW f1="False" f2="2"/><ROW f1="False" f2="3"/></root>'
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.loadXML(xmlstr);
    var rows = xmlDoc.getElementsByTagName("ROW");
    for(var i=0;i<rows.length;i++)
    {
    var row=rows.item(i);
    if(row.getAttribute("f1")=="True")
    {
    xmlDoc.documentElement.removeChild(row);
    }
    }
    alert("rows.length:"+rows.length);
    alert(xmlDoc.xml);alert(rows.item(0).xml);
    rows = xmlDoc.getElementsByTagName("ROW");
    alert("rows.length:"+rows.length);</SCRIPT>