Vendetta
Vendetta

Reputation: 97

why innerTEXT doesn't work with nodes?

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

Answers (2)

Roko C. Buljan
Roko C. Buljan

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

Niet the Dark Absol
Niet the Dark Absol

Reputation: 324750

innerText is the "ancient Internet Explorer" way of doing it.

The correct name is textContent.

Upvotes: 4

Related Questions