我想用 JavaScript 选择文本的一部分。我想根据不使用节点的长度指定范围。例如:我有文本“AB DDSD”,我想从 0-3 中进行选择。我不能用 span
之类的元素包装它,因为阿拉伯字母不会连接。
下面的示例选择了 foo
类中的所有文本,但如何为其指定范围?
var selection = window.getSelection();
var txt = document.getElementsByClassName("foo");
var range = document.createRange();
range.selectNodeContents(txt);
selection.removeAllRanges();
selection.addRange(range);
我愿意使用其他方法代替 select
。我的目标是为 p
标记中的某些字符着色,但不能使用任何元素将其包装起来。如果我只将 سس
的一个字符换行,那么它会变成 سس
。
最佳答案
实际上保留了连字:
let t = document.getElementById('test');
t.innerHTML = `<span style="color: red">${t.textContent.slice(0,3)}</span>${t.textContent.slice(3)}`;
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body>
<span id="test">مرحبا بالعالم</span>
</body>
</html>
这可能与浏览器的字体和渲染有关,但这是我的样子:
考虑到 purpose,我不认为添加零宽度空间是解决方案.
关于javascript - 如何使用 select 方法选择文本的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52249307/