arianhojat
08-02-2007, 07:15 PM
Hello All,
I just realized some xml nodes returned by my AJAX could be empty, and it will stop the script since there is no nodeValue in below script.
Any easier way to do this without checking each node...
I have to resort for each node to do an if else
if(
classes[i].getElementsByTagName('StartTime')[0]
&& classes[i].getElementsByTagName('StartTime')[0].firstChild
)
or alternatively:
if(
classes[i].getElementsByTagName('StartTime').length
&& classes[i].getElementsByTagName('StartTime')[0].firstChild
)
like this:
//AJAX onSuccess javascript function
function getClassesSuccess(transport)
{
var responseXML = transport.responseXML;
var classes = responseXML.getElementsByTagName('c');
if( classes[i].getElementsByTagName('StartTime').length && classes[i].getElementsByTagName('StartTime')[0].firstChild )
StartTime = classes[i].getElementsByTagName('StartTime')[0].firstChild.nodeValue;
else
StartTime = 'N/A';
if( classes[i].getElementsByTagName('EndTime').length && classes[i].getElementsByTagName('EndTime')[0].firstChild )
EndTime = classes[i].getElementsByTagName('EndTime')[0].firstChild.nodeValue;
else
EndTime = 'N/A';
document.getElementById('time').innerHtml=StartTime +' - '+EndTime;
}
//my simplified xml file
<root>
<c>
<StartTime/>
...
</c>
<c>
<StartTime>10:00pm</StartTime>
...
</c>
</root>
I just realized some xml nodes returned by my AJAX could be empty, and it will stop the script since there is no nodeValue in below script.
Any easier way to do this without checking each node...
I have to resort for each node to do an if else
if(
classes[i].getElementsByTagName('StartTime')[0]
&& classes[i].getElementsByTagName('StartTime')[0].firstChild
)
or alternatively:
if(
classes[i].getElementsByTagName('StartTime').length
&& classes[i].getElementsByTagName('StartTime')[0].firstChild
)
like this:
//AJAX onSuccess javascript function
function getClassesSuccess(transport)
{
var responseXML = transport.responseXML;
var classes = responseXML.getElementsByTagName('c');
if( classes[i].getElementsByTagName('StartTime').length && classes[i].getElementsByTagName('StartTime')[0].firstChild )
StartTime = classes[i].getElementsByTagName('StartTime')[0].firstChild.nodeValue;
else
StartTime = 'N/A';
if( classes[i].getElementsByTagName('EndTime').length && classes[i].getElementsByTagName('EndTime')[0].firstChild )
EndTime = classes[i].getElementsByTagName('EndTime')[0].firstChild.nodeValue;
else
EndTime = 'N/A';
document.getElementById('time').innerHtml=StartTime +' - '+EndTime;
}
//my simplified xml file
<root>
<c>
<StartTime/>
...
</c>
<c>
<StartTime>10:00pm</StartTime>
...
</c>
</root>