如何使用选择方法选择文本的一部分?

时间:2018-09-09 23:06:22

标签: javascript

我想用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标记中的某些字符着色,但不能使用任何元素将其包装。如果我只包装سس的一个字符,那么它将变成س س

2 个答案:

答案 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>

这可能与浏览器的字体和渲染有关,但这是我的外观:

enter image description here

考虑到purpose,我不认为添加零宽度的空格是解决方案。

答案 1 :(得分:0)

在这里找到答案:Partially colored Arabic word in HTML

在末尾添加零宽度字符有助于:<span>ش&zwj;</span><span>س</span>