Javascript 删除使用document.createElement创建的元素
我创建此链接只是为了从fetchApi请求下载一个文件。 我想知道的是,点击后如何删除这个元素。 我尝试给元素指定id,比如:Javascript 删除使用document.createElement创建的元素,javascript,dom,Javascript,Dom,我创建此链接只是为了从fetchApi请求下载一个文件。 我想知道的是,点击后如何删除这个元素。 我尝试给元素指定id,比如:tempLink.id='someId',然后是: let element = document.getElementById('someid') element.parentNode.removeChild(element) 代码如下: const tempLink = document.createElement('a'); tempLink.href = cs
tempLink.id='someId'
,然后是:
let element = document.getElementById('someid')
element.parentNode.removeChild(element)
代码如下:
const tempLink = document.createElement('a');
tempLink.href = csvURL;
tempLink.setAttribute('download', selectedDocument?.fileName);
tempLink.click();
如果从未将元素放入DOM中,则只有
tempLink
常量具有对它的引用。当该常量超出范围时,浏览器将回收DOM元素。你不需要做任何明确的事情来实现这一点
有点偏离你的问题,但我应该注意到,如果你从未将元素放入DOM并立即释放对它的引用,Firefox会忽略点击——或者至少,它是我上次检查的,所以除非它是最近更改的。。。您可能希望将其附加到某个位置,稍等片刻,然后将其删除。解决方法如下所示:
// WORKAROUND for Firefox's ignoring the click
const tempLink = document.createElement('a');
tempLink.href = csvURL;
tempLink.setAttribute('download', selectedDocument?.fileName);
document.body.appendChild(tempLink);
tempLink.click();
setTimeout(() => {
document.body.removeChild(tempLink); // On modern browsers you can use `tempLink.remove();`
}, 100);
如果从未将元素放入DOM中,则只有
tempLink
常量具有对它的引用。当该常量超出范围时,浏览器将回收DOM元素。你不需要做任何明确的事情来实现这一点
有点偏离你的问题,但我应该注意到,如果你从未将元素放入DOM并立即释放对它的引用,Firefox会忽略点击——或者至少,它是我上次检查的,所以除非它是最近更改的。。。您可能希望将其附加到某个位置,稍等片刻,然后将其删除。解决方法如下所示:
// WORKAROUND for Firefox's ignoring the click
const tempLink = document.createElement('a');
tempLink.href = csvURL;
tempLink.setAttribute('download', selectedDocument?.fileName);
document.body.appendChild(tempLink);
tempLink.click();
setTimeout(() => {
document.body.removeChild(tempLink); // On modern browsers you can use `tempLink.remove();`
}, 100);
如果您不将tempLink放在页面上,那么您将无法删除它,因为它只存在于您的文件中。如果你想把它附加到某个地方,你需要这样做 document.querySelector(“在此处插入要追加的内容”).append(tempLink) 现在你可以用
document.querySelector(“模板链接的id”).remove()如果不将模板链接放在页面上,则无法将其删除,因为它仅存在于文件中。如果你想把它附加到某个地方,你需要这样做 document.querySelector(“在此处插入要追加的内容”).append(tempLink) 现在你可以用
document.querySelector(“模板链接的id”).remove()我认为您可以将元素的样式显示更改为无。我认为您可以将元素的样式显示更改为无。您只需在以编程方式单击链接后执行remove方法,就像这样
templink.remove()
(如果附加link元素,这将起作用,如果不附加,则设置为null)那么tempLink.parentNode.removeChild(tempLink)
?@RobBailey无法读取的属性'removeChild'null@AngelSalazar谢谢,tempLink.remove()有效。lordcarnisser-tempLink.remove();
如果它不在DOM anywhere中,而在您上面的代码中,则它是不可操作的(这就是@RobBailey的代码不起作用的原因)。您只需要在通过编程方式单击链接后执行remove方法,就像这样tempLink.remove()
(如果您附加了link元素,则此方法会起作用,如果您不附加它,则设置为null)tempLink.parentNode.removeChild(tempLink)怎么样?@RobBailey无法读取的属性'removeChild'null@AngelSalazar谢谢,tempLink.remove()有效。lordcarnisser-tempLink.remove();
如果不在DOM anywhere中,那么它是不可操作的,而您上面的代码中没有(这就是@RobBailey的代码不起作用的原因).element1.style.display=“无”//element1是要删除的元素。element1.style.display=“无”//element1是要删除的元素。