Используя document.currentScript
, мы можем получить ссылку на элемент script
, в котором выполняется код, а затем, используя .nextElementSibling
, мы можем получить следующий узел-братэто элемент.Наконец, с .insertBefore
и .appendChild()
мы можем вставить новый элемент непосредственно перед тем, как элемент был передан в качестве аргумента (родственный элемент, который был найден ранее, или body
, еслиничего не найдено).
ПРИМЕЧАНИЕ : Не вызывайте вашу функцию createElement
, так как это может вызвать конфликт имен с document.createElement()
.
.элемент сразу после элемента script
.
.someDiv {
height: 100px;
width: 100px;
background-color: gold;
}
<head>
<script>
function create(type, style) {
var container = document.createElement(type);
container.classList.add(style); // Best way to add a class
container.textContent = "Hello!";
let sibling = document.currentScript.nextElementSibling;
if(sibling){
// Insert the new element before the next sibling
sibling.parentNode.insertBefore(sibling, container)
} else {
// Insert the new element at the end of the body
document.body.appendChild(container);
}
}
</script>
</head>
<body>
<p>The new element should be right below this.</p>
<script>
create("div", "someDiv");
</script>
<p>The new element should be right above this.</p>
</body>