我使用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代码的数量。
解决这个问题的最简单方法是什么?
答案 0 :(得分:1)
这不容易解决。如果您希望之后处理HTML,则不应计算文本的偏移量和长度,而应计算HTML上的偏移量和长度。但是,将HTML标记插入到现有HTML字符串中可能会导致嵌套无效。最后,如果您将节点作为HTML代码重新插入,则会丢失状态,如附加的事件处理程序。
答案 1 :(得分:1)
使用
$( “#读者”)。文本()
而不是$(“#reader”)。html()从你的内容中获取文本
答案 2 :(得分:0)
我会剥离标签或使用DOM方法 - 比如。 .nodeType
,.nodeValue
。