我想用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
标记中的某些字符着色,但不能使用任何元素将其包装。如果我只包装سس
的一个字符,那么它将变成س س
。
答案 0 :(得分:1)
连字实际上被保留:
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,我不认为添加零宽度的空格是解决方案。
答案 1 :(得分:0)
在这里找到答案:Partially colored Arabic word in HTML
在末尾添加零宽度字符有助于:<span>ش‍</span><span>س</span>