Reputation: 97
I'm trying to getElementsByTagName("title")
then alert its values
it tried to use innerText
it return nothing
Example:
<script>
var req = new XMLHttpRequest();
req.onreadystatechange=function()
{
if(req.readyState==4 && req.status==200)
{
titles = req.responseXML.getElementsByTagName("title");
for(i=0; i < titles.length; i++)
{
alert(titles[i].innerText);
}
}
}
req.open("GET","webapp/data",true);
req.send();
</script>
it only works when i use innerHTML but i don't understand why !
Example:
<script>
var req = new XMLHttpRequest();
req.onreadystatechange=function()
{
if(req.readyState==4 && req.status==200)
{
titles = req.responseXML.getElementsByTagName("title");
for(i=0; i < titles.length; i++)
{
alert(titles[i].innerHTML);
}
}
}
req.open("GET","webapp/data",true);
req.send();
</script>
Upvotes: 1
Views: 517
Reputation: 206343
Depends on the browser, go with textContent
titles[i].textContent || titles[i].innerText
using innerText
only as an eventual fallback.
https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText
https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent
textContent
is more appropriate way for all browsers and since IE9
Element.innerHTML
is a reliable cross-browser way to get all HTML content String of an element. The difference from textContent
is in that innerHTML
will retrieve the complete HTML structure into a string, while Node.textContent
will retrieve nodes type 3 (context text) from an element (and it's children).
https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML
https://developer.mozilla.org/en/docs/Web/API/Node/nodeType
Upvotes: 1
Reputation: 324750
innerText
is the "ancient Internet Explorer" way of doing it.
The correct name is textContent
.
Upvotes: 4