Javascript:如何将多个p标签中的选定文本包装到每个带有span标记的标记的每个内容中

问题描述 投票:2回答:3

当我沿多个p标签选择文本时,我获取每个标签的每个内容,这在Javascript: How to divide selected text along multiple p tags into each content for each tag中得到了回答。

例如,

<p>I am (selection start)a boy</p>
<p>You are a girl</p>
<p>We are(selection end) friends</p>

现在,我可以获得三个元素,“一个男孩”,“你是一个女孩”,“我们是”。

那么,如何用span标签包装每个元素并改变它的样式呢?例如,

<p>I am (selection start) <span style ="font-weight:bold">a boy</span></p>
<p><span style ="font-style:italic">You are a girl</span></p>
<p><span style ="font-decoration:underline">We are</span> (selection end) friends</p>

我尝试使用jquery wrapinner方法,过滤器,包含等等,但我无法弄明白。

感谢您的时间。

javascript
3个回答
3
投票

试试这段代码:

var elems = document.querySelectorAll('p');

for(var i=0;i<elems.length;i++){
    elems[i].innerHTML = elems[i].innerHTML.replace('a boy','<span style="font-weight: bold">a boy</span>');
    elems[i].innerHTML = elems[i].innerHTML.replace('You are a girl','<span style="font-weight: bold">You are a girl</span>');
    elems[i].innerHTML = elems[i].innerHTML.replace('We are','<span style="font-weight: bold">We are</span>');
}
<p>I am a boy</p>
<p>You are a girl</p>
<p>We are friends</p>

1
投票

我不知道你选择在哪里添加你的span验证是什么,但是因为你可以使用Jquery,你可以使用以下代码获得解决方案:

$("#p1").html($("#p1").html().replace("a boy", '<span style ="font-weight:bold">$&</span>'));
$("#p2").html($("#p2").html().replace("You are a girl", '<span style ="font-style:italic">$&</span>'));
$("#p3").html($("#p3").html().replace("We are", '<span style ="text-decoration:underline">$&</span>'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="p1">I am (selection start)a boy</p>
<p id="p2">You are a girl</p>
<p id="p3">We are(selection end) friends</p>

注意:也不是font-decoration:underline它的text-decoration:underline


0
投票

假设你有3个如下段落:

<p id="p1">I am (selection start)a boy</p>
<p id="p2">You are a girl</p>
<p id="p3">We are(selection end) friends</p>

然后你可以改变样式并用任何html标签包装,如下所示:

let p1 = document.getElementById("p1").innerHTML;
let p2 = document.getElementById("p2").innerHTML;
let p3 = document.getElementById("p3").innerHTML;

document.getElementById("p1").innerHTML = `<span style='color:blue'>${p1}</span>`
document.getElementById("p2").innerHTML = `<span style='color:green'>${p2}</span>`
document.getElementById("p3").innerHTML = `<span style='color:darkGray'>${p3}</span>`

https://jsfiddle.net/emilvr/5Lonrk0f/4/

© www.soinside.com 2019 - 2024. All rights reserved.