我想突出顯示(或「註釋」)div內的幾個單詞,並使用具有背景顏色的跨度。使用跨度動態突出顯示div內的多個單詞
在我的(最小)例子中,單詞「x」和「y」應該註釋(y的位置是37,x的位置是44)。然而,我的方法「annotateString」似乎並沒有工作,但我不知道爲什麼...
我的方法的想法是迭代div html內容以添加所需的跨度前綴或後綴位置。由於事實,我給出了基於字符串的位置,而不是可能由於之前的註釋修改了html內容,我希望位置指針「pos」凍結,如果它的內部是html元素(f.ex.已存在跨度)。
function annotateString(str, start, end, prefix, suffix) {
var annotatedString = '';
var pos = -1;
var freeze = false;
if (str[0] == '<') {
freeze = true;
}
for (var i = 0; i < str.length; i++) {
if (!freeze && str[i] != '<')
pos++;
if (str[i] == '<')
freeze = true;
if (str[i] == '>')
freeze = false;
if (pos == start && !freeze)
annotatedString += prefix + str[i];
else if (pos + 1 == end && !freeze)
annotatedString += str[i] + suffix;
else
annotatedString += str[i];
}
return annotatedString;
}
$(function() {
var strOld = $("#item").html();
var prefix = '<span style="background-color:yellow;">';
var suffix = '</span>';
// this should annotate the "y"
var strNew = annotateString(strOld, 37, 37, prefix, suffix);
$("#item").html(strNew);
// this should annotate the "x"
var strOld = $("#item").html();
var strNew = annotateString(strOld, 44, 44, prefix, suffix);
$("#item").html(strNew);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="item">In this string I want to annotate "y" <- "x"</div>
想突出什麼?只有'x'和'y'? –