<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>
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>";
If the element has no parent node, that is if it is the root node of the document, setting its outerHTML property will throw a DOMException with the error code NO_MODIFICATION_ALLOWED_ERR.
<!-- Элемент, перед которым необходимо добавить произвольный 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);
Пример в песочнице - jsfiddle.net/krfwuksy insertAdjacentHTML
, как показали вам выше, либо придется сначала распарсить результат: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 );
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>");