Javascript / jQuery子串突出显示问题

时间:2011-08-23 10:53:37

标签: javascript jquery string

我使用Javascript来计算在我的页面上选择的子字符串的偏移量和长度。这会被存储在某个地方,之后,当我将鼠标悬停在文本上时,我想使用jQuery中的偏移量和长度突出显示其中的某些单词。以下是用于突出显示的基本代码:

content = $("#reader").html();
newContent = content.substring(0,offset)+'<font style="color: red;">'+content.substring(offset,offset+length)+'</font>'+content.substring(offset+length,content.length);
content = $("#reader").html(newContent);

现在我的问题是:偏移量和长度是根据屏幕上显示的内容计算的。但是,实际的HTML代码也可能包含&lt; p&gt;。或其他标签。因此,我突出显示的文本会“移位”,具体取决于HTML代码的数量。

解决这个问题的最简单方法是什么?

3 个答案:

答案 0 :(得分:1)

这不容易解决。如果您希望之后处理HTML,则不应计算文本的偏移量和长度,而应计算HTML上的偏移量和长度。但是,将HTML标记插入到现有HTML字符串中可能会导致嵌套无效。最后,如果您将节点作为HTML代码重新插入,则会丢失状态,如附加的事件处理程序。

答案 1 :(得分:1)

使用

  

$( “#读者”)。文本()

而不是$(“#reader”)。html()从你的内容中获取文本

答案 2 :(得分:0)

我会剥离标签或使用DOM方法 - 比如。 .nodeType.nodeValue