2016-04-30 43 views
1

我试图getElementsByTagName("title")然后提醒自己的价值观为什么innerTEXT不能和节点一起工作?

它试图用innerText它返回任何结果

例子:

<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> 

当我使用innerHTML但我不明白它只能为什么!

例子:

<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> 
+0

为什么不转换XML以JSON?这样,您可以比使用DOM api更自然地访问这些值 – evolutionxbox

+0

这些问题真的没有帮助您吗? ['[javascript] innerText'](http://stackoverflow.com/search?q=%5Bjavascript%5D+innerText)你搜索了,对吧? –

+0

@FelixKling我搜索了,但问题我不知道innerHTML如何给出与textContent相同的值 – Vendetta

回答

4

innerText是做它的 “古代的Internet Explorer” 的方式。

正确的名称是textContent

+0

它的工作原理!但innerHTML不应该正常工作?只有textContent应该能够打印该值 – Vendetta

1

取决于浏览器,去textContent

titles[i].textContent || titles[i].innerText 

使用innerText仅作为最终的后备用。

https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText
https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent

textContent是更合适的方式对所有的浏览器和自IE9

Element.innerHTML是一个可靠的跨浏览器的方式来获得一个元素的所有HTML内容字符串。与textContent的区别在于innerHTML将检索完整的HTML结构为字符串,而Node.textContent将从元素(以及它的子元素)检索节点类型3(上下文文本)。

https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML
https://developer.mozilla.org/en/docs/Web/API/Node/nodeType

相关问题