如何在innerHTML中插入html元素?

k0pti3hp  于 2023-03-11  发布在  其他
关注(0)|答案(3)|浏览(185)

我有下面的html:

<div id="d1"></div>This is a text that <div id="d2"></div>needs to be manipulated

以及来自文本的指示开始和结束位置的两个短语,在本例中为:

start = "a text"
end = "needs"

我如何使用javascript添加一个span元素,在开始短语之前加上一个开始标签,在结束短语之后加上一个结束标签,就像这样?

<div id="d1">/div>This is <span id="phrase_1">a text that <div id="d2"></div>needs</span> to be manipulated
ff29svar

ff29svar1#

知道你的初始html包含在哪种类型的父元素中是很有趣的。因为,如果你能以那个元素为目标。
如果你能得到父元素,那么你可以:

parent.innerHTML.replace('a text', '<span>a text').replace('needs',  'needs</span>')
toe95027

toe950272#

首先清理标记,在<div id="d1">标记后面有额外的/div>
很简单,只需使用here中提到的String.prototype.replaceAll()函数。

var previousText = document.getElementById('d1').innerHTML;
var startTag = 'a text';
var endTag = 'needs';
var changedText = previousText.replaceAll(startTag, '<span>'+startTag).replaceAll(endTag, endTag + '</span>');
console.log(changedText)
vfh0ocws

vfh0ocws3#

用这个

const start = "a text"
const end = "needs"

const html = container.innerHTML

const indexStart = html.indexOf(start)
const indexEnd = html.lastIndexOf(end)

const newHTML =
  html.slice(0, indexStart)
+ `<span>${html.slice(indexStart, indexEnd + end.length)}</span>`
+ html.slice(indexEnd + end.length)

console.log(container.innerHTML = newHTML)
span { color: red }
<div id="container">
  <div id="d1"></div>This is a text that <div id="d2"></div>needs to be manipulated
</div>

相关问题