javascript - 显示 chop 字符串的显示值

标签 javascript html css angular

我想做什么

我希望能够计算出字符串在被 chop 之前显示了多少。

我为什么要这样做

我有一个元素列表。您可以从此列表中选择任意数量的元素。我有一个面板元素,显示所选元素名称的逗号分隔字符串。如果字符串太长,它应该被 chop 并显示被 chop 隐藏的任何其他选定元素的 +{number} 值。

基本示例

https://stackblitz.com/edit/angular-ivy-cbyemy

上面的 stackblitz 显示了用例的基本示例。

当前面板标题:

an item, another item, som... +6

期望的结果:

an item, another item, som... +3

我尝试过的

  • 使用element.innerHTMLelement.innerText 读取显示的字符串。两者都显示完整的字符串,而不是显示的 chop 字符串。

最佳答案

借用了here的回答并根据要求对其进行了一些修改。

您的 fork stackblitz,更新了工作演示 here .

你可以从这个函数中得到可见字符的数量-

countVisibleCharacters(element): number {
var text = element.firstChild.nodeValue;
var count = 0;

element.removeChild(element.firstChild);

for (var i = 0; i < text.length; i++) {
  var newNode = document.createElement('span');
  newNode.appendChild(document.createTextNode(text.charAt(i)));
  element.appendChild(newNode);

  if (newNode.offsetLeft < element.offsetWidth) {
    count++;
  }
}

return count;
}

那么就可以这样得到后缀了——

getTitleSuffix(): void {
let element = document.getElementById('title');
let count = this.countVisibleCharacters(element);
let substr = element.textContent;
substr = substr.substring(count - 1);
this.titleSuffix = substr.split(',').length;

关于javascript - 显示 chop 字符串的显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69085269/

相关文章:

javascript - 样式 native JavaScript 通知

javascript - 与简单的 for 循环混淆 - javascript

javascript - 如何更改点击链接以匹配我从另一个 API 请求获得的 ID

javascript - HTML5 本地存储(XML/JSON 数据)

javascript - 如何使用 jquery/JS 替换/更改 Html 元素?

javascript - 在弹出元素中打开一个 url(获取新的标题和地址栏)

html - 在 IE7 中放置在 PRE-tag 中时,多个 BR-tags 将合并为一个

html - SVG:剪辑路径不适用于矩形

html - Angular Material 文本区域占位符和文本对齐问题

javascript - 找不到动态添加的表单元素 ID