【发布时间】:2015-12-07 15:04:25
【问题描述】:
假设我们有一段内容为“嗨,这是stackoverflow中的一个新问题!”
当我们在本段中选择某些内容时,它会变成红色。例如,我们选择了 stackoverflow,然后它变成了<span class="red">stackoverflow</span>。我们如何使用 Javascript 来做到这一点?
这是我的代码:
var x = {};
x.getSelected = function() {
var t = '';
if (window.getSelection) {
t = window.getSelection();
} else if (document.getSelection) {
t = document.getSelection();
} else if (document.selection) {
t = document.selection.createRange().text;
}
return t;
}
$(document).ready(function() {
var selectedText;
$(document).bind("mouseup", function() {
selectedText = x.getSelected()
if (selectedText !=''){
alert(selectedText);
//Now I wanna set new content for selected item but not working
a=selectedText;
selectedText.html("<span class='red'>"+a+"</span>");
}
});
});
.red {
color : red;
}
<p>suppose to be we have a paragraph with this content " Hi , It's a new question in stackoverflow!" and when we are selecting something in this paragraph , it's turn to be Red .for example we selected stackoverflow & then it turn to .how can we do this with Javascript? </p>
【问题讨论】:
-
它比看起来要复杂得多,主要是因为跨浏览器的差异。您需要为选定的文本获取一个 Range 对象,将文本节点分成三部分,插入一个
span元素,取第二部分并将其放在跨度中,将跨度插入文本的第二部分用于是...范围部分是我个人不知道的部分。不过,Tim Down 为它做了一个方便的库,叫做 rangy,这可能会有所帮助。 -
不是 Stackoverflow 的正确问题。你至少应该展示你迄今为止创建的代码。
标签: javascript jquery