Javascript 是否使用Jquery将元素的某些文本包装在span中?

Javascript 是否使用Jquery将元素的某些文本包装在span中?,javascript,jquery,dom,word-wrap,Javascript,Jquery,Dom,Word Wrap,我有一篇HTML文章,上面有一些注释,这个注释指的是正文中的一些文本。我想将此文本包装在标记中,以便可以根据需要对其进行修改 我有一个SPARQL查询,它返回我一些信息和三个重要变量: 元素-->文本的容器元素的id 开始-->元素内注释的第一个字符的位置 结束-->元素内注释最后一个字符的位置 下面是一个可能会澄清的例子 使用此元素: <p class="metadata-entry" id="element_id"> <span class="generat

我有一篇HTML文章,上面有一些注释,这个注释指的是正文中的一些文本。我想将此文本包装在
标记中,以便可以根据需要对其进行修改

我有一个SPARQL查询,它返回我一些信息和三个重要变量:

元素-->文本的容器元素的id

开始-->元素内注释的第一个字符的位置

结束-->元素内注释最后一个字符的位置

下面是一个可能会澄清的例子

使用此元素:

    <p class="metadata-entry" id="element_id">
    <span class="generated" id="span1">Publisher: </span>
    BioMed Central
    <span class="generated" id="span2"> (</span>
    London
    <span class="generated" id="span3">)</span>
    </p>

现在,在我返回这3个值的ajax调用之后,如何将单词“London”包装在一个范围内,以便将其背景设置为特定的颜色?

这可能有点脏,但我认为它应该可以工作。由于您有一个包含“London”的元素,因此可以用当前元素的修改版本替换该元素的HTML

您可以在这里看到如何使用jquery html函数:

基本上,您要做的是使用它作为getter从“element_id”元素中获取HTML,使用Javascript字符串函数修改它,在您拥有的开始和结束索引处添加span标记,然后使用HTML函数用修改后的字符串替换“element_id”的HTML

我希望这对你有用

编辑:为了更好地说明这一点,下面是您将要做的:

var currentHTML = $(element).html();
var newHTML = currentHTML.substring(0, start) + "<span style='background-color: green;'>" + currentHTML.substring(start, end) + "</span>" + currentHTML.substring(end, currentHTML.length);
$("element_id").html(newHTML);
var currentHTML=$(element.html();
var newHTML=currentHTML.substring(0,开始)+“”+currentHTML.substring(开始,结束)+“”+currentHTML.substring(结束,currentHTML.length);
$(“element_id”).html(newHTML);

Ok,在遇到Json解析器错误后,我想出了如何向元素添加span。唯一的问题是,我的起始值和结束值不计算标记字符,因此如果我超过27,则表示页面中显示的第27个字符。相反,<代码>子字符串< /代码>方法将我的HTML添加到另一个标签的中间。有没有办法避免标记字符?JQuery有一种文本方法,它只返回元素中的文本:api.JQuery.com/text/我想您可以做一些有趣的事情,将HTML与修改后的文本结合起来。基本上,您可以使用$(element).text来计算与开始索引和结束索引相对应的字符串。然后,您可以使用Javascript indexOf方法找出单词(“London”)在HTML字符串中的位置。然后,你将使用它作为新的开始和结束索引,并在我的答案中使用该方法。有道理吗?是的
text()
而不是
html()
创建
currentHTML
,一切正常。非常感谢您的回答!这对我帮助很大!很高兴能帮上忙!我知道这不是最干净的解决方案,但我很高兴它对你有效。
var currentHTML = $(element).html();
var newHTML = currentHTML.substring(0, start) + "<span style='background-color: green;'>" + currentHTML.substring(start, end) + "</span>" + currentHTML.substring(end, currentHTML.length);
$("element_id").html(newHTML);