Javascript 在jQuery中,什么';text()和innerHTML之间的区别是什么?

Javascript 在jQuery中,什么';text()和innerHTML之间的区别是什么?,javascript,jquery,Javascript,Jquery,我有div元素并在其中保存text/string,然后我尝试迭代它们,text()不起作用,但innerHTML工作得很好 var arr = $('div.elm'); $.each(arr, function(i,j){ alert(j.text()); // it's not working console.log(j.text()); // nothing's in log alert(j.innerHTML); // works fine! }); 与.

我有div元素并在其中保存text/string,然后我尝试迭代它们,text()不起作用,但innerHTML工作得很好

var arr = $('div.elm');
$.each(arr, function(i,j){
    alert(j.text()); // it's not working

    console.log(j.text()); // nothing's in log

    alert(j.innerHTML); // works fine!
});

与.html()方法不同,.text()可以在XML和html中使用 文件。.text()方法的结果是一个字符串,其中包含 所有匹配元素的组合文本。(由于HTML中的变化) 在不同的浏览器中,返回的文本可能在换行符中有所不同 和其他空白。)

text()
是一个jQuery方法,
innerHTML
是一个DOM元素属性

调用jQuery对象时,收到的第二个参数(元素)将是DOM元素,而不是jQuery对象

  • jQuery方法类似于对HTML元素调用
    innerText
    /
    textContent
  • jQuery方法类似于对HTML元素调用
    innerHTML
如果要对每个传入的参数使用jQuery方法,必须将其包装在jQuery对象中:

$.each(arr, function(i,j){
    alert($(j).text());
});

在您的情况下,应该将对象包装在jQuery对象中以使用以下方法:


innerHTML
是一个元素属性。

只返回该元素及其所有子元素的文本,其中as
。innerHTML
返回该元素中的所有HTML。

您迭代的是哪种元素?
text1
。。。等等..有时需要重新jquery:)迭代项。。。请尝试
$(j)。text()
j不是jQuery对象,因此无法使用text(),您需要将其包装first@AbdullahBattal:我认为“re-jquery”可能是我见过的最笨拙的编造编程词。:-)我没有否决投票,因为我真的认为这不值得否决投票,但jQuery
text()
并不等同于
innerText
。在内部,jQuery迭代子节点,从CDATA和TextNodes中提取
nodeValue
。大多数情况下,结果都是一样的,但在其他情况下,您可能会发现一些空白差异。而且,并非所有浏览器都支持
innerText
,相反,它们实现了符合标准的
textContent
。@AndyE:啊,我真的应该在制作类似的东西之前检查一下。。。谢谢你的更正,我已经改写了答案:)。这实际上并没有回答原来的问题,是吗?正确,但不完整。真正的问题是
text()
innerHTML
对完全不同的对象进行操作。
$.each(arr, function(i,j){
    alert($(j).text()); 

    console.log($(j).text()); 

    alert(j.innerHTML); 
});