admin管理员组文章数量:1434908
For example, there is the following page:
<html>
<head>
<style>
.a {
background-color: red;
}
.b {
background-color: yellow;
}
</style>
</head>
<body>
<div class="a">123</div>
<div>456</div>
<script>
var banner = document.createElement("div");
banner.className = "b";
banner.innerHTML = "Banner Content";
var content = document.getElementsByClassName("a")[0];
content.parentNode.insertBefore(banner, content);
</script>
</body>
</html>
As you can see, I just add 'banner' div before first page item. But this code isn't universal; if items are absolute positioned, my code doesn't work. I need to create some JS which will add 'banner' div before page content for every situation. Is it possible? Thanks in advance!
For example, there is the following page:
<html>
<head>
<style>
.a {
background-color: red;
}
.b {
background-color: yellow;
}
</style>
</head>
<body>
<div class="a">123</div>
<div>456</div>
<script>
var banner = document.createElement("div");
banner.className = "b";
banner.innerHTML = "Banner Content";
var content = document.getElementsByClassName("a")[0];
content.parentNode.insertBefore(banner, content);
</script>
</body>
</html>
As you can see, I just add 'banner' div before first page item. But this code isn't universal; if items are absolute positioned, my code doesn't work. I need to create some JS which will add 'banner' div before page content for every situation. Is it possible? Thanks in advance!
Share Improve this question asked Jul 12, 2016 at 6:40 malcoaurimalcoauri 12.2k28 gold badges88 silver badges141 bronze badges 1- 1 Have you thought prepending it to document.body? – Roko C. Buljan Commented Jul 12, 2016 at 6:42
2 Answers
Reset to default 3Updated for prepend in body as on @Quentin ment
You can use document.body
to insert the div before every element like,
var banner = document.createElement("div");
banner.className = "b";
banner.innerHTML = "Banner Content";
document.body.insertBefore(banner,document.body.childNodes[0]);
.a {
background-color: red;
}
.b {
background-color: yellow;
}
<div class="a">123</div>
<div>456</div>
Use insertAdjacentHTML
, the first parameter determines position in relation to the target element (e.g. first child of body is afterbegin
). The second parameter is the string that will be rendered as HTML to be inserted (e.g. <div class="b">Banner Content</div>
).
The first parameter must be one of the following:
- 'beforebegin': Before the element itself.
- 'afterbegin' : Just inside the element, before its first child.
- 'beforeend' : Just inside the element, after its last child.
- 'afterend' : After the element itself.
SNIPPET
var target = document.body;
target.insertAdjacentHTML("afterbegin", "<div class='b'>Banner Content</div>");
<html>
<head>
<style>
.a {
background-color: red;
}
.b {
background-color: yellow;
}
</style>
</head>
<body>
<div class="a">123</div>
<div>456</div>
</body>
</html>
本文标签: javascriptHow to add div banner before every page content using JSStack Overflow
版权声明:本文标题:javascript - How to add div banner before every page content using JS? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745631464a2667300.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论