Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在body标记中插入rtbefore()元素?_Javascript_Dom_Insert_Getelementsbytagname - Fatal编程技术网

Javascript 如何在body标记中插入rtbefore()元素?

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

我尝试在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 || 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
    @Gibolt
    textContent
    应首选设置文本。不应将文本推送到具有
    innerHTML
    的元素。改为使用
    textContet
    。@Persijn这只是一个例子,回到2011年,你必须在IE中使用
    textContent
    innerText
    ,所以这更方便。agread,但我对它进行了评论,因为我们不再这样做了。你能更改/编辑它吗?@Persijn这是OP问题中的代码,但我可以更改,我们不是为社区回答问题吗?而不是一个用户?我们不是帮助服务。感谢您提供此代码片段,它可能会提供一些有限的、即时的帮助。一个适当的例子将通过说明为什么这是一个很好的解决问题的方法,极大地提高它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设