[js, netscape] problemen met obj.childNodes(index)

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik lees via JS een xml bestand in en wil vervolgens door alle elementen bij langs te lopen alle data verwerken. Nu wil ik dus vanuit een element, gewoon alle childelementen doorlopen. Dat doe ik nu dus gewoon door middel van:

JavaScript:
1
2
for (var i = 0; i < objRoot.childNodes.length; i++)
{}


Werkt prima in IE, maar Netscape (7.01) lijkt 'r nogal wat moeite mee te hebben, want ik krijg een error en mijn scriptjeuh werkt verder niet meer.

Hoe kan ik dit oplossen ? Of zal de fout toch ergens anders zitten .. ?

Verwijderd

wat voor een error krijg je?

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
code:
1
2
Error:  objRoot.childNodes is not a function
Source file: ............. line : ..................

Verwijderd

Kun je het relevante gedeelte van het script hier neergooien? Maakt het wat makkelijker om te debuggen, nu is het vrij lastig om te zien waar het aan ligt. (objRoot niet gedefineerd?)

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
JavaScript:
1
2
3
4
5
6
7
8
9
XML inladen..

fnVerwerk(objXml.documentElement)

function fnVerwerk(objRoot)
{
    for (var index = 0; index < objRoot.childNodes.length; index++)
    {}
}

Zo ziet mijn code er zwaar versimpeld uit.. maar hier gaat het dus om.. childNodes.length kan ik niet uitlezen..

edit:

Heel vreemd maar nu ik alle childNodes(index) heb veranderd in een arraybenadering childNodes[index] werkt het ook in Netscape prima..! fijn zo! :) Kan ik weer verder met probleempjes in mijn script zoeken :P oftewel debuggen..

[ Voor 31% gewijzigd door r0bert op 12-01-2003 14:56 . Reden: probleem opgelost ]


Verwijderd

:) netjes

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Anders probleempje

Nu lijkt het erop dat wanneer er een onclick event gefired wordt en er allerlei dingen moeten veranderen aan de html e.d., dat het te snel gaat voor netschaap !? Als ik namelijk een pauze tussen de verschillende dingetjes bouw dmv een ALERT() dan werkt het wel..

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
arrOpenIds = new Array();
if (strOpenId) arrOpenIds = fnFindParentIds(objXml, strOpenId);

document.getElementById(strId).innerHTML = '';
        
for (var intLoop = 1; intLoop < fnGetCurrentDepth(strId); intLoop++)
    document.getElementById(strId).innerHTML += '[img]"'[/img]';
            
document.getElementById(strId).innerHTML += objXml.documentElement.getAttribute("text") 
   + fnGetData(objXml.documentElement, intLevels, 0, fnGetCurrentDepth(strId), arrOpenIds);

return '../images/min.png'; }

Bij het uitvoeren van dit stukje code gaat het fout, iemand idee hoe ik dat op kan lossen ? Iedere keer handmatig een alert() weg moeten klikken is vanzelfsprekend geen oplossing :P

[ Voor 6% gewijzigd door r0bert op 12-01-2003 16:07 ]


Verwijderd

probeer het eens met setTimeout(function, 0)

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Nee, dat lijkt niet te werken :'(

JavaScript:
1
setTimeout('function', 1000)

Verwijderd

function zonder aanhalings tekens? dus:
JavaScript:
1
setTimeout(loader, 10)


nl, wat ik doe (direct geript vanaf de mozilla XML extras pagina) en wat dus werkt:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function execute()
{
  var p = new XMLHttpRequest();
  p.open("GET", "data.xml",false);
  p.send(null);

  var s = new XMLSerializer();
  var d = p.responseXML;
  var str = s.serializeToString(d);
  document.getElementById("reageer").firstChild.nodeValue = p.responseText;
  document.getElementById("serieel").firstChild.nodeValue = str;
}

setTimeout(execute,0); // Dit zou dus moeten werken volgens de Mozilla XML extras pagina.
</script>

HTML:
1
2
3
4
5
6
7
8
9
<body>
<h1>Synchronized GET test</h1>
<div class="box"><span class="boxheader">responseText</span>
<pre id="reageer">@@foo bar@@</pre>
</div>
<div class="box"><span class="boxheader">responseXML serialized</span>
<pre id="serieel">@@foo bar@@</pre>
</div>
</body


Daarentegen zou het best ook kunnen liggen aan NS 7.01 (immers Mozilla 1.0.2). Ik heb iig geen problemen met Mozilla 1.3b. Let er op dat er een verschil is tussen een sync. get en een unsync. get, volgens mij heeft dat nogal veel invloed op hoe mozilla/ns zich gedraagt. Ik zal morgen nog eens even op werk kijken of ik wat heb liggen.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Helaas lijkt het hier niet te werken :'(

Verwijderd

Dan weet ik het ook niet meer, kun je testen met Mozilla 1.3a of zo en kijken of het daar ook in gebeurt?
Pagina: 1