Answer the question
In order to leave comments, you need to log in
How to insert a text string before a given element?
Insert a text string before the given element. For example,
<div id="parentElement">
<span id="childElement">foo bar</span>
</div>
<script>
var sp1 = document.createElement("span");
sp1.innerHTML = "Hello!";
var sp2 = document.getElementById("childElement");
var parentDiv = sp2.parentNode;
parentDiv.insertBefore(sp1, sp2);
</script
<div id="parentElement">
<span id="childElement">foo bar</span>
</div>
<script>
var sp2 = document.getElementById("childElement");
var parentDiv = sp2.parentNode;
parentDiv.insertBefore("<div>TEXT</div>", sp2);
</script>
Answer the question
In order to leave comments, you need to log in
var sp2 = document.getElementById("childElement");
var parentDiv = sp2.parentNode;
var sp1 = document.createElement("div");
parentDiv.insertBefore(sp1, sp2);
sp1.outerHTML = "<h1>Result of ajax request</h1>";
<!-- Элемент, перед которым необходимо добавить произвольный html-код -->
<div id="target">Target</div>
// новый html-контент
var newHtml = '<div><span>Span 1.1</span><span>Span 1.2</span></div><div><span>Span 2.1</span><span>Span 2.2</span></div>';
// вставляем перед целевым элементом
document.getElementById('target').insertAdjacentHTML('beforeBegin', newHtml);
Sandbox example - jsfiddle.net/krfwuksy
Either through a poorly maintained insertAdjacentHTML
, as shown above, or you have to parse the result first:
function parseData(data){
var div = document.createElement("div");
div.innerHTML = data;
return Array.prototype.slice.call(div.childNodes)
.reduce(function(df, child){
return df.appendChild(child), df;
}, document.createDocumentFragment())
;
}
//str - ваш HTML
//beforer - элемент, перед которым надо вставить str
beforer.parentNode.insertBefore( parseData(str), beforer );
You are trying to insert a string, not an html element, and therefore swears.
Option 1:
var sp2 = document.getElementById("childElement");
sp2 = "<div>TEXT</div>" + sp2;
var sp2 = document.getElementById("childElement");
var parentDiv = sp2.parentNode;
parentDiv.insertAdjacentHTML("afterBegin", "<div>TEXT</div>");
var sp2 = document.getElementById("childElement");
sp2.insertAdjacentHTML("beforeBegin", "<div>TEXT</div>");
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question