Javascript 如何在body标记中插入rtbefore()元素?
我尝试在js中使用insertBefore,如下所示:Javascript 如何在body标记中插入rtbefore()元素?,javascript,dom,insert,getelementsbytagname,Javascript,Dom,Insert,Getelementsbytagname,我尝试在js中使用insertBefore,如下所示: var p = document.createElement("p"); p.innerHTML = "test1"; document.body.insertBefore(p, null); var p = document.createElement("p"); p.innerHTML = "test2"; document.body.insertBefore(p, null); var body = document.body
var p = document.createElement("p");
p.innerHTML = "test1";
document.body.insertBefore(p, null);
var p = document.createElement("p");
p.innerHTML = "test2";
document.body.insertBefore(p, null);
var body = document.body || document.getElementsByTagName('body')[0],
newpar = document.createElement('p');
newpar.innerHTML = 'Man, someone just created me!';
body.insertBefore(newpar,body.childNodes[0]);
但这会在body标记关闭之前添加最后一个p元素,我如何使用它以便在打开时将其添加到顶部?因此,添加的最后一个元素将是body标记中的第一个元素
我试过:
document.body.insertBefore(p, document.getElementsByTagName('body')[0]);
但firebug显示:
未找到节点“code:”8您可以使用
firstChild
属性获取主体
元素的第一个子元素。然后用它作为参考
const p=document.createElement(“p”);
p、 textContent=“test1”;
document.body.insertBefore(p,document.body.firstChild)代码>您必须在某些内容之前插入<代码>文档。getElementsByTagName('body')[0]
是body元素(在所有浏览器中获取body元素的语法都有点技巧)1。如果要插入到主体中,则要在主体的第一个元素之前插入。可能是这样的:
var p = document.createElement("p");
p.innerHTML = "test1";
document.body.insertBefore(p, null);
var p = document.createElement("p");
p.innerHTML = "test2";
document.body.insertBefore(p, null);
var body = document.body || document.getElementsByTagName('body')[0],
newpar = document.createElement('p');
newpar.innerHTML = 'Man, someone just created me!';
body.insertBefore(newpar,body.childNodes[0]);
1在某些浏览器中是document.body
,其他浏览器中是document.documentElement
等,但在所有浏览器中,标记名都是body
Modern Solution-prepend
这是vanilla JS,比以前的选项更具可读性。它目前在中提供
您可以直接在字符串前加前缀,尽管它们不是“p”标记
parent.prepend("This text!")
相关DOM方法
parent.append
child.before
和child.before
child.replacetwith
let li=document.queryselectoral(“li”);
让newli=document.createElement(“li”);
newli.innerText=“7”;
李[6]。之前(newli)//此操作与insertBefore()相同。此行在8之前添加7
//李[5]。之后(newli)代码>
- 一,
- 二,
- 三,
- 四,
- 五,
- 六,
- 八,
- 九,
- 十,
哪些浏览器不支持document.body
?@alex你说得对,似乎每个浏览器都支持它。我想这是我很久以前记忆中的一个痕迹。@Kooilnc谢谢你回来找我,我有很多document.body
在野外,我有点担心:PTry out document.body.prepend。另外,不设置innerHTML通常是一种很好的做法。使用oldNode.replaceWith(newNode)
或设置oldNode.innerText
@GibolttextContent
应首选设置文本。不应将文本推送到具有innerHTML
的元素。改为使用textContet
。@Persijn这只是一个例子,回到2011年,你必须在IE中使用textContent
或innerText
,所以这更方便。agread,但我对它进行了评论,因为我们不再这样做了。你能更改/编辑它吗?@Persijn这是OP问题中的代码,但我可以更改,我们不是为社区回答问题吗?而不是一个用户?我们不是帮助服务。感谢您提供此代码片段,它可能会提供一些有限的、即时的帮助。一个适当的例子将通过说明为什么这是一个很好的解决问题的方法,极大地提高它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设