Guest FirefoxRocks Posted June 23, 2009 Share Posted June 23, 2009 Something very weird is going on with my JavaScript accessing the XML document.This is the error from Firebug: tags.getElementsByTagName("level")[0].childNodes[0] is undefined IE8 says something similar.The weird thing is that this line works fine: tags.getElementsByTagName("name")[0].childNodes[0];The code is like this:var tags = xmlDoc.getElementsByTagName("tag"); for(i=0; i<tags.length; i++) { var tagLevel = tags[i].getElementsByTagName("level")[0].childNodes[0].nodeValue; var name = tags[i].getElementsByTagName("name")[0].childNodes[0].nodeValue; if(name.search(letters) >= 0) { // do some stuff with arrays } } The XML file is this: <?xml version="1.0" encoding="utf-8"?><tags> <tag> <level>inline</level> <name>a</name> </tag> <tag> <level>inline</level> <name>abbr</name> </tag></tags> I've tried several different DOM methods but they all return the same error. What is wrong? Link to comment Share on other sites More sharing options...
Ingolme Posted June 23, 2009 Share Posted June 23, 2009 That's strange. Have you checked if it has any childNodes? alert(tags[i].getElementsByTagName("level")[0].childNodes.length); And if it does alert(tags[i].getElementsByTagName("level")[0].childNodes.item(0).nodeValue); Link to comment Share on other sites More sharing options...
Guest FirefoxRocks Posted June 23, 2009 Share Posted June 23, 2009 alert(tags[i].getElementsByTagName("level")[0].childNodes.length); Returns 1 (a whole lot of times) alert(tags[i].getElementsByTagName("level")[0].childNodes.item(0).nodeValue); Returns the text in the <level> element a whole lot of times var tagLevel = tags[i].getElementsByTagName("level")[0].childNodes.item(0).nodeValue; Returns tags.getElementsByTagName("level")[0].childNodes.item(0) is null Link to comment Share on other sites More sharing options...
Ingolme Posted June 23, 2009 Share Posted June 23, 2009 alert(tags[i].getElementsByTagName("level")[0].childNodes.length); Returns 1 (a whole lot of times) alert(tags[i].getElementsByTagName("level")[0].childNodes.item(0).nodeValue); Returns the text in the <level> element a whole lot of times var tagLevel = tags[i].getElementsByTagName("level")[0].childNodes.item(0).nodeValue; Returns tags[i].getElementsByTagName("level")[0].childNodes.item(0) is null Actually, you shouldn't use var inside a loop. You can only declare a variable once in a Javascript file.Try this:var tagLevel, name;for(i=0; i<tags.length; i++) { tagLevel = tags[i].getElementsByTagName("level")[0].childNodes[0].nodeValue; name = tags[i].getElementsByTagName("name")[0].childNodes[0].nodeValue; if(name.search(letters) >= 0) { // do some stuff with arrays }} Link to comment Share on other sites More sharing options...
Guest FirefoxRocks Posted June 23, 2009 Share Posted June 23, 2009 Ok, that still returns the same error. Link to comment Share on other sites More sharing options...
Ingolme Posted June 23, 2009 Share Posted June 23, 2009 Try tags.item(i) instead of tags[i]Is there any other code on your page that might be interfering with this? Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.