Problem XML Dokument per Rekursion nach ID durchsuchen
DevFire
- javascript
0 DevFire
Hintergrund möchte eine XML Datei (Oberflächenbeschreibung für Firefox) nach mehreren
ID's untersuchen und die damit verbunden Elemente verstecken (Hidden setzen).
Das mit dem Hidden setzen funktioniert einwandfrei nur das rekursive Browsen der XML Datei bereitet Probleme (Abbruchbedingung kein Element im Zweig mehr da). Der XML Tree wird durchwandert bis in die tiefste Verästelung aber es wird nicht mehr zurückgesprungen. (Hört sich komplizierter an als es ist ich beschreibs mal).
<window>
<script/>
<script/>
<hbox>
<grid>
<columns>
<column />
<column /> <---- Hier bleibts stehen er geht nicht zu columns zurück
</columns>
<rows>
<vrow >
<vbox>
</vbox>
</row>
</rows>
</grid>
</hbox>
...
</window>
var INS =
{
ElementsDisabled:function(bValue)
{
var root = document.documentElement;
if(root.hasChildNodes())
{
INS.ElementsDisabled_Recursiv(bValue, root);
}
alert("Test: Root");
},
ElementsDisabled_Recursiv:function(bValue, child_current)
{
var IDXul = "IN_S_";
var childs_next = child_current.childNodes;
var childs_next_count = childs_next.length;
for (var i = 0; i <= childs_next_count; i++)
{
var child_next = childs_next[i];
var child_next_id = child_next.getAttribute("id");
// Start Testing
var child_next_name = child_next.nodeName.toUpperCase();
var child_next_value = child_next.nodeValue;
alert("Number of Child Nodes : " + childs_next_count + "\n\nCHILD_ID " + i + " : " + child_next_name + "\nValue : " + child_next_value + "\nID : " + child_next_id);
// End Testing
// Search ID for matching String if found Show or Hide Element
if(child_next_id.indexOf(IDXul + "securebrowsing") != -1)
{
INS.ElementDisabled(child_next_id, bValue);
}
if(child_next_id.indexOf(IDXul + "anonymisationproxy") != -1)
{
INS.ElementDisabled(child_next_id, bValue);
}
// If there Child Nodes open same function recursive
if(child_next.hasChildNodes())
{
var RetVal = INS.ElementsDisabled_Recursiv(bValue, child_next);
alert("Test : " + RetVal);
}
}
return 0;
},
}
Lösung selbst gefunden Indexgrenzen falsch gesetzt.