innerHTML中的字符数

时间:2017-07-24 16:59:33

标签: javascript html

在html中,如何计算innerHTML中显示的真实字符?

例如,在<strong>Hi</strong>中,字符数应为2,而不是19。

我尝试了两种不起作用的方法:

  1. str.length - 这将包含<>个字符。
  2. getElementById - 这将包含<>个字符:
  3. 我尝试如下:

    elem_output = document.getElementById("example_id"); 
    elem_output.innerText.length;//1st
    elem_output.textContent.length;//2nd
    

6 个答案:

答案 0 :(得分:4)

我不知道代码中哪个元素有#example_id,但element.innerText.length应该有效。

修改:其他答案建议使用textContent代替innerText。我认为,根据OP的实际需要,一个或另一个(甚至innerHTML,它出现在问题的标题中)可能是合适的。所以,我建议仔细阅读文档中这些属性之间的差异:

编辑2 :OP的问题是在innerHTML 中说真实字符显示,所以我选择{ {1}}自:

  

innerText知道样式,不会返回隐藏元素的文本,而innerText会。{/ p>

&#13;
&#13;
textContent
&#13;
var tag = document.getElementById('test');
console.log(tag.innerText.length)
&#13;
&#13;
&#13;

答案 1 :(得分:1)

var html='<div>div1</div><div>div2</div>';
console.log( 
    html.replace(/<(?:.|\n)*?>/gm, '').length
);

答案 2 :(得分:1)

试试这个

&#13;
&#13;
var p=document.createElement("p")
p.innerHTML="<strong>Hi</strong>"
alert(p.querySelector("strong").innerHTML.length)
&#13;
&#13;
&#13;

如果您在html中有数据,那么您也可以尝试按照

&#13;
&#13;
alert(document.getElementsByTagName("strong")[0].innerText.length);
//Or
alert(document.getElementsByTagName("strong")[0].innerHTML.length);
//Or
alert(document.querySelector("strong").innerHTML.length);
//Or
alert(document.querySelector("strong").innerText.length);
&#13;
<strong>Hi</strong>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

我想你的文字中可能会有很多不同的html标签,所以有三种做事方式

如果您需要使用正则表达式来过滤特定代码,那么 innerHTML 将是您获得所需内容的方式。

var exampleid = document.getElementById('example_id').innerHTML;
exampleid = exampleid.replace(/<[^>]strong>/g, ""); 
alert(exampleid.length + ' characters.');
<div id="example_id">hi, <strong>I'm bold and my tags are ignored</strong> while <i>I'm Italic but my tags are counted</i>.</div>

请参阅:Regular Expression: exclude html tags from "content"

如果您希望插入所有代码,请使用innerTexttextContent

innerText

var exampleid = document.getElementById('example_id').innerText.length;
alert(exampleid + ' characters.');
<div id="example_id">hi, <strong>I'm bold</strong> while <i>I'm Italic</i>.</div>

textContent (谨慎textContent W3C标准,IE&lt; 9)不支持:

var exampleid = document.getElementById('example_id').textContent.length;
alert(exampleid + ' characters.');
<div id="example_id">hi, <strong>I'm bold</strong> while <i>I'm Italic</i>.</div>

详细了解所有这些之间的差异:Difference between innerText and innerHTML in javascript

答案 4 :(得分:1)

<strong>Hi</strong>

的内容如何?
document.getElementsByTagName("strong").innerText.length;

答案 5 :(得分:0)

您想使用https://groups.google.com/forum/#!topic/python-tornado/K8zerl1JB5o

var element = document.querySelector('#some-element');
var length = element.textContent.length;

这是最简单优雅的解决方案。