javascript 插入邻接HTML,然后使用dom选择器选择

rnmwe5a2  于 2022-12-28  发布在  Java
关注(0)|答案(4)|浏览(163)

我想插入一些未知的HTML(contentToInsert),并在稍后的某个时候删除它。
如果我使用insertAdjacentHTML,以后就不能说

myDiv.insertAdjacentHTML('afterbegin', contentToInsert);
 myDiv.querySelector('contentToInsert') //cannot work of course

因为它没有ID或类名。
我不能这样 Package 它(所以我稍后会参考它):

var content = document.createElement('div');
content.classList.add('my-content-wrap')
content.innerHTML = contentToInsert;

myDiv.insertAdjacentHTML('afterbegin', adContent);//it can be any allowed position, not just afterbegin

基本上,我想删除它稍后在某个时候,但不知道如何选择它。我不知道的立场,这将是instated。

v09wglhw

v09wglhw1#

由于insertAdjacentHTML只接受字符串,因此您可以
1.将内容定义为字符串
1.使用template/string添加它
1.将该字符串添加到myDiv
然后,您可以使用my-content-wrap类将选择器指向myDiv元素,并将其从DOM中删除。

const myDiv = document.querySelector('#myDiv');
const content = 'Disappears after two seconds';
const html = `<div class="my-content-wrap">${content}</div>`;

myDiv.insertAdjacentHTML('afterbegin', html);

const pickup = myDiv.querySelector('.my-content-wrap');

setTimeout(() => pickup.remove(), 2000);
<div id="myDiv">Original content</div>
nbnkbykc

nbnkbykc2#

您说“我想插入一些未知的HTML(contentToInsert),然后在以后某个时候将其删除”
我根本不会使用insertAdjacentHTML,下面是实现它的方法:

let myDiv = document.getElementById('myDiv');
let contentToInsert = "<h1>Some html content</h1>";

myDiv.innerHTML = contentToInsert;

这会将您的内容插入到您的div中。您可以使用以下命令删除它:

myDiv.innerHTML = "";
lsmd5eda

lsmd5eda3#

在其中一个案子里...

const 
  divElm   = document.querySelector('#div-elm')
, Insert_1 = '<span>inserted content 1 </span>'
, Insert_2 = '<span>inserted content 2 </span>'
  ;

divElm.insertAdjacentHTML('afterbegin', Insert_1);
const ref_1 = divElm.firstChild;

divElm.insertAdjacentHTML('afterbegin', Insert_2);
const ref_2 = divElm.firstChild;

ref_1.classList.add('RED')
ref_2.classList.add('BLU')

console.log( '', ref_1, `\n`, ref_2 )
.RED { color: red; }
.BLU { color: blue; }
<div id="div-elm">
  blah blah bla..
</div>
qltillow

qltillow4#

很多优秀的人已经回答了你的问题,但是这里有一个解决方案,如果你只是使用js添加这个特定的html,而其他内容是预先添加在html中的,那么它总是第一个子元素,因为你使用的是afterbegin,或者你可以像其他人给你的例子一样来做。
抱歉,不能发表评论,信誉不足,最近才加入

相关问题