how to check if a tag exists using javascript without getting an error
Asked Answered
M

2

7

I have xml data with root "clients" and it can contains multiple elements of "client" inside it. sometimes there are no client elements that are returned in the XML file (this is ok). I need to determine if there are any client elements returned so i tried using:

if(typeof myfile.getElementsByTagName("client")){
  alert("no clients");
}

This does the intended job, but I get a firebug error whenever there are no "client" elements.

Mackay answered 24/12, 2012 at 6:29 Comment(0)
K
17

Why not just check for the length of the NodeList?

if( myfile.getElementsByTagName("client").length == 0 )
{
 alert("no clients");
}

Add this to check if myfile has been defined

if( typeof myfile == "undefined" || myfile.getElementsByTagName("client").length == 0 )
{
 alert("no clients");
}
Kayne answered 24/12, 2012 at 6:31 Comment(4)
it still makes an error message that says 'null' is not an objectMackay
@Mackay - Is myfile null? If you run this in the console for this page if( document.getElementsByTagName("client").length == 0 ) { alert("no clients"); } it will alert "no clients".Kayne
ok you are right. basically the file was coming in as completely empty when there were no clients. So it wasn't any longer a legit xml document. Thanks for first answer though. it helped me isolate the problem.Mackay
@Mackay - Glad you got it figured out :)Kayne
C
3

Try:

if (!myfile.getElementsByTagName("client").length) {}
//                                          ^ falsy (0) if no elements

if you're not sure myfile exists as an element you should check for that first:

if (typeof myfile !== 'undefined'
    && myfile.getElementsByTagName 
    && myfile.getElementsByTagName("client").length) {}
Corin answered 24/12, 2012 at 6:32 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.