Reputation: 1047
I am trying to write a javascript function to parse a bit of the DOM tree and return a part of it to further parse. Despite stepping through the function which seems to be working fine, the return of the function shows as undefined to the calling statement. Is there a way to fix this?
from = entityfromid($(value)[0].getElementsByTagName("O1")[0].childNodes[0].childNodes[0].nodeValue).getElementsByTagName("Name")[0].childNodes[0].nodeValue;
function entityfromid(id) {
$($(xmlDoc)[0].getElementsByTagName("Entities")[0].childNodes).each(function (index, value) {
if(value.getElementsByTagName('Id')[0].childNodes[0].nodeValue == id) {
return value;
}
});
}
Upvotes: 0
Views: 3319
Reputation: 322452
You need to take the return
statement out of the .each()
, and instead return from your entityfromid
function.
function entityfromid(id) {
var ret_value;
$($(xmlDoc)[0].getElementsByTagName("Entities")[0].childNodes).each(function (index, value) {
if(value.getElementsByTagName('Id')[0].childNodes[0].nodeValue == id) {
ret_value = value;
return false;
}
});
return ret_value;
}
Here, when your result is found, it will set the value of the ret_value
variable, and do a return false
, which breaks the loop.
Then the ret_value
is used for the return
from your function.
Upvotes: 3