假设我有一个/code>标记,其中包含一些文本。Span节点还可以具有子节点(strong,em)标记。我可以通过使用
标记中,然后比较每行和单词的top值,以计算一行中的总字符数。一旦主跨度内有其他节点,解决方案就停止工作。因为将单词放入
/code>中会删除其他子项的上下文。获取所有子节点并对其进行修改的解决方案似乎非常无效。
期待着有什么想法。
示例SPAN:
<span style="font-size:22pt;line-height:1;">
<strong>
Qui
<em>
<u>
<s>
squ
</s>
</u>
</em>
e ac justo pulvinar, efficitur odio nec, convallis ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vestibulum ex tortor, pretium ac sapien sed, condimentum fringilla elit. Fusce aliquam ullamcorper magna eget dignissim. In porttitor nec magna non auctor. Nullam feugiat ultrices molestie.
</strong>
</span>
您可以使用childNodes并通过将文本拆分成行来使用循环计数how字符:
null
var i = 1;
document.querySelector('span').childNodes.forEach(function(ele, idx) {
if (ele.nodeType == Node.TEXT_NODE || ele.nodeType == Node.ELEMENT_NODE) {
var lines = ele.textContent.trim().split('\n');
lines.forEach(function(l) {
if (l.trim().length>0)
console.log('on line n. ' + i++ + ' there are ' + l.trim().length + ' chars');
})
}
});
<span style="font-size:22pt;line-height:1;">
<strong>
Qui
<em>
<u>
<s>
squ
</s>
</u>
</em>
e ac justo pulvinar, efficitur odio nec, convallis ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vestibulum ex tortor, pretium ac sapien sed, condimentum fringilla elit. Fusce aliquam ullamcorper magna eget dignissim. In porttitor nec magna non auctor. Nullam feugiat ultrices molestie.
</strong>
</span>