Moose Moose - 4 months ago 13
Javascript Question

"getElementById not a function" when trying to parse an AJAX response?

I'm running

GM_xmlhttpRequest
(in a Greasemonkey script) and storing the
responseText
into a newly created HTML element:

var responseHTML = document.createElement('HTML');
...
onload: function() { responseHTML.innerHTML = response.responseText; }




And then I am trying to find an element in
responseHTML
:

console.log(responseHTML.getElementsByTagName('div'));
console.log(responseHTML.getElementById('result_0'));




The first works fine, but not the second. Any ideas?

Answer

getElementById is not a method of HTML elements. It is a method of the document node. As such you can't do:

div.getElementById('foo'); // invalid code

You can implement your own function to search the DOM by recursively going through children. On newer browsers you can even use the querySelector method. For minimal development you can use libraries like jQuery or sizzle.js (the query engine behind jQuery).

Comments