首页 > 文章列表 > 如何计算DOM元素内的文本行数

如何计算DOM元素内的文本行数

计算行数 DOM文本行数
186 2023-09-16

概述

文档对象模型(DOM)元素内的文本行数,无论它是、

还是

在第二种方法中,我们将使用数组的split()方法,其中我们将把换行符作为参数传递。因此,数组将由换行符前后的元素创建,并且我们将计算数组的长度。

算法

第 1 步 - 创建一个 HTML 模板,在其中添加一个具有行高的 div 元素。行高是特定行的高度。还创建一个将在其中生成输出的 span 标记。

步骤2  现在在脚本标签中访问行的父元素。使用offsetHeight计算父元素的总高度。

var domHeight = a.offsetHeight;

步骤 3  使用样式属性获取行的行高值。由于行高值还包含单位“px”,因此我们需要使用parseInt()函数从中获取数字。

第四步  现在将提取的值,即domHeight和line-height进行分割。

var totalLines = domHeight / linesHeight;

第5步- 变量“totalLines”包含父元素中的行数。这将返回span标签中的行数。

Example

的中文翻译为:

示例

在这个例子中,我们将通过计算整个文档对象模型(DOM)元素的高度来统计行数,使用offsetHeight属性来获取DOM元素的高度,并将DOM高度除以行高,这将给我们输出DOM中存在的总行数。

<html>
<head>
   <title>Count the text lines inside of DOM element</title>
</head>
<body>
   <div id="lines" style="line-height: 30px;">
      Welcome to tutorialspoint<br>
      Visit us at: https://www.tutorialspoint.com/<br>
      Buy the course of your domain <br>
      Get the certificate <br>
      Thank you for visiting<br>
   </div>
   <strong style="border: 2px solid black; padding: 0.1rem;">
      Total number of lines:
      <span id="out"></span>
   </strong>
   <script>
      var a = document.getElementById("lines");
      var domHeight = a.offsetHeight;
      var linesHeight = parseInt(a.style.lineHeight);
      var totalLines = domHeight / linesHeight;
      document.getElementById("out").innerText=totalLines;
   </script>
</body>
</html>

在下面的图像中,它显示了上面示例的输出。其中包含了“30px”的行高,它将DOM元素的“offsetHeight”分割,并返回span标签中元素的数量。

算法

步骤 1  创建一个HTML模板,在其中添加一个div元素。创建一个span标签,用于生成输出。

第 2 步  现在使用 document.getElementById() 访问父元素内的文本。

const textLines = document.getElementById("lines").innerText;

步骤 3  使用数组split()方法,将换行符(“

”)作为参数传递给它。split方法将文本的行存储在数组中作为一个元素。

第 4 步  现在我们将使用数组的 length 方法来计算数组的长度,该长度将返回元素中的文本行数。

const numLines = textLines.split("").length;

第 5 步 使用显示span标签中文本行数的输出

document.getElementById("out").innerText=numLines-1;

在这里,我们从“numLines”中减去了一个,因为它包含了一个额外的换行元素,该元素在所有文本行开始之前被插入。

Example

的中文翻译为:

示例

在这个例子中,我们将使用数组 split() 方法来计算行数,在该方法中我们将访问变量中的 DOM,并借助 split(“

”) 方法中,我们将传递一个换行符作为参数,它将把所有元素存储在数组中作为换行符。之后我们将计算数组的长度,这将返回 DOM 中可用的文本行数。

<html>
<head>
   <title>Count the text lines inside of DOM element</title>
</head>
<body>
   <div id="lines" style="line-height: 30px;">
      Welcome to tutorialspoint<br>
      Visit us at: https://www.tutorialspoint.com/<br>
      Thank you for visiting<br>
   </div>
   <strong style="border: 2px solid black; padding: 0.1rem;">
      Total number of lines:
      <span id="out"></span>
   </strong>
   <script>
      const textLines = document.getElementById("lines").innerText;
      const numLines = textLines.split("").length;
      document.getElementById("out").innerText=numLines-1;
   </script>
</body>
</html>

下图中显示了上述示例的输出。其中所有三个文本行都作为一个元素存储在数组中。因此,在计算数组的长度时,它将返回 3。

结论

在第一个示例中,我们必须使用 parseInt() 解析行高的值,因为它也包含字符串值,如果我们将该值除以“offsetHeight”值,那么它将返回 (NaN ),意思是“不是数字”。所以我们使用了parseInt(),但是如果我们想以十进制返回它,我们也可以使用parseFloat()。