有这样的HTML代码段:
Lorem ipsum dolor sit amet. Lorem ipsum again and dolor
我可以选择使用的元素
$("mark")
.我想得到一个代表mark
ed字的字符串列表,左边是5个字符,右边是5个字符,字符串是前缀和后缀[...]
.
对于这个例子,它将是:
[ "[...] psum dolor sit [...]", "[...] met. Lorem ipsu [...]", "[...] and dolor [...]", ]
目前我是这样的:
var $highlightMarks = $("mark");
var results = [];
for (var i = 0; i < $highlightMarks.length; ++i) {
var $c = $highlightMarks.eq(i);
var text = $c.parent().text().trim().replace(/\n/g, " ");
var indexStart = new RegExp($c.html(), "gim").exec(text).index;
text = "[...] " + text.substring(indexStart - 5, $c.html().length + indexStart + 5) + " [...]";
results.push(text);
}
alert(JSON.stringify(results))
Lorem ipsum dolor sit amet. Lorem ipsum again and dolor.
但是当同一段中的两个单词相同时(在此示例中为dolor
案例),这会失败.
psum dolor sit
它应该是,而不是显示在数组的末尾and dolor.
.
所以,有了对元素的引用,在右侧获取一些文本和在左侧获得一些文本的正确方法是什么?