如何计算 DOM 元素内的文本行数
概述
计算文档对象模型 (DOM) 元素(无论是 <div>、<p> 还是 <label>)内文本行数的方法主要有两种。第一种方法是,我们将 DOM 元素的高度"offsetHeight"除以输出的行高,得到总行数。
第二种方法则是使用数组的 split() 方法,并将换行符字面量作为参数传入。这样,我们将创建包含换行符前后元素的数组,并计算数组的长度。
算法
步骤 1 − 创建一个 HTML 模板,并在其中添加一个带有 line-height 的 div 元素。 Line-height 是特定行的高度。同时创建一个 span 标签,用于生成输出。
步骤 2 − 现在,在 script 标签内访问行的父元素。使用 offsetHeight 计算父元素的总高度。
var domHeight = a.offsetHeight;
步骤 3 − 使用 style 属性获取线条的 line-height 值。由于 line-height 值也包含单位"px",因此我们必须使用 parseInt() 来获取其中的数字。
步骤 4 − 现在将提取的值(即 domHeight 和 line-height)相除。
var totalLines = domHeight / line-height;
步骤 5 - 变量"totalLines"包含父元素中的行数。它将返回 span 标签中的行数。
示例
在此示例中,我们将通过使用 offsetHeight 属性计算完整 DOM 元素的高度,然后将 DOM 高度除以 line-height,计算出任意文档对象模型 (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.cainiaomax.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"中减去了 1,因为它包含一个额外的换行符元素,该元素在所有文本行开始之前插入。
示例
在此示例中,我们将使用数组 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.cainiaomax.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()。
相关文章
有用资源
html 参考教程 - 该教程包含有关 html 的更多信息:https://www.cainiaomax.com/html/

