请大家看一下为何统计不出汉字数量呢


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<div id="myDiv">
  床前明月光,疑是地上霜。举头望明月,低头思故乡。
</div>
<p id="wordCount"></p>

<script>
myDiv = document.getElementById('myDiv');
wordCount = myDiv.textContent.length;
display = '${wordCount}字';
getElementById('wordCount').textContent = display;
</script>
</body>
</html>

【以下回答由 GPT 生成】

问题的关键在于JavaScript的textContent属性,它返回的是元素的文本内容,并不区分汉字和其他字符。因此,使用textContent.length来统计汉字数量是不准确的。

解决这个问题的解决方案是使用正则表达式来匹配汉字,并统计匹配到的数量。下面是具体的解决方案:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>无标题文档</title>
</head>

<body>
  <div id="myDiv">
    床前明月光,疑是地上霜。举头望明月,低头思故乡。
  </div>
  <p id="wordCount"></p>

  <script>
    var myDiv = document.getElementById('myDiv');
    var text = myDiv.textContent; // 获取<div>中的文本

    // 使用正则表达式匹配汉字,将所有非汉字字符替换为空字符串
    var chineseCharacters = text.replace(/[^\u4e00-\u9fa5]/g, '');

    var wordCount = chineseCharacters.length; // 统计汉字数量
    var display = wordCount + '字';
    document.getElementById('wordCount').textContent = display;
  </script>
</body>

</html>

这段代码首先获取<div>元素中的文本内容,然后使用replace方法结合正则表达式/[^\u4e00-\u9fa5]/g将非汉字字符替换为空字符串。最后,统计替换后的内容的长度,即为汉字数量。

这样,你就可以通过JavaScript统计汉字数量并将结果显示在页面上了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

下次细心点,题主


 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
 
<body>
<div id="myDiv">
  床前明月光,疑是地上霜。举头望明月,低头思故乡。
</div>
<p id="wordCount"></p>
 
<script>
const myDiv = document.getElementById('myDiv');
var wordCount = myDiv.textContent.length;
var display = `${wordCount}字`;
document.getElementById('wordCount').textContent = display;
</script>
</body>
</html>