Не добавлять элементы к первой метке
function $(selector) {
var resultObject = {
append: function (element) {
var parser = new DOMParser();
var dos = parser.parseFromString(element, "text/html");
var all = dos.getElementsByTagName("body")[0];
var elemWhichAppend = document.getElementsByTagName(selector);
var children = all.childNodes;
for (var i = elemWhichAppend.length-1; i >=0; i--) {
var msgContainer = document.createDocumentFragment();
var children = all.childNodes;
for (var child = 0; child < children.length; child++) {
var al = children[child];
msgContainer.appendChild(al);
}
insertAfter(msgContainer, elemWhichAppend[i]);
}
}
}
return resultObject;
}
function insertAfter(newNode, referenceNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
<!DOCTYPE html>
<html>
<head>
<title></title>
\t <meta charset="utf-8" />
<script src="jqueryjs.js"></script>
</head>
<body>
<h1 class="testing">APPEND</h1>
<p>Hallo, ich bin ein P TAG </p>
<h1 class="testing">APPEND2</h1>
<p>BADGL</p>
<input type="button" value="append tag/text " onclick="$('p').append('<ul><li>RIBA RIBI<ul><li>FRANK RIBERY</li></ul></li></ul> <h1>NIGOGOG</h1> messi ist scheiße');" />
</body>
</html>
Выполнить код пропущено. Как видите, функция добавляет только к последнему элементу p теги. И забывает «messi ist scheiße». Я много думал, но я не могу найти свою ошибку. Это потому, что текст «messi ist scheiße» есть?
Возможно, ваш код любит Месси и отказывается показать оскорбительный текст. – Teemu
@Teemu Неплохая шутка ..... –
Как сказал Анди, код слишком сложный, вы можете ознакомиться с 'insertAdjacentHTML', это может быть решением вашей проблемы. Создайте временный 'div', используйте' iAHTML() 'для создания элементов из строки в div, добавьте содержимое div в фрагмент документа и добавьте его к элементам. – Teemu