Я использую AJAX для добавления данных в элемент div, где я заполняю div из JavaScript, как я могу добавить новые данные в div без потери предыдущих данных, найденных в div?
javascript
Adham
источник
источник
Ответы:
Попробуй это:
источник
div
содержатся элементы со слушателями событий или вводимые данные с введенным пользователем текстом. Я рекомендую ответ Чанду .Использование appendChild:
Использование innerHTML:
этот подход удалит всех слушателей существующих элементов, как упомянуто @BiAiB. Поэтому будьте осторожны, если вы планируете использовать эту версию.
источник
createTextNode
не будет работать, если вы загружаете HTML. Например, если вы хотите добавить элементы списка, это не сработает. Это довольно ограничивающее.Остерегайтесь
innerHTML
, вы что-то теряете, когда используете это:Эквивалентно:
Который уничтожит все узлы внутри вас
div
и создаст новые. Все ссылки и слушатели элементов внутри него будут потеряны .Если вам нужно сохранить их (например, когда вы прикрепили обработчик кликов), вам нужно добавить новое содержимое с помощью функций DOM (appendChild, insertAfter, insertBefore):
источник
appendChild
сделал @Cybernatedocument.createTextNode()
.Если вы хотите сделать это быстро и не хотите терять ссылки и слушатели, используйте: .insertAdjacentHTML () ;
«Он не выполняет повторный анализ элемента, на котором он используется, и, следовательно, он не повреждает существующие элементы внутри элемента. Это и отсутствие дополнительного шага сериализации делают его намного быстрее, чем прямые манипуляции с внутренним HTML».
Поддерживается всеми основными браузерами (IE6 +, FF8 +, Все остальные и мобильные): http://caniuse.com/#feat=insertadjacenthtml
Пример из https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
источник
insertAdjacentElement()
иinsertAdjacentText()
.Если вы используете jQuery, вы можете использовать
$('#mydiv').append('html content')
его, и он сохранит существующий контент.http://api.jquery.com/append/
источник
Даже это будет работать:
источник
Решение IE9 + (Vista +), без создания новых текстовых узлов:
Однако это не совсем помогло мне, так как мне нужно было новую строку после каждого сообщения, поэтому мой DIV превратился в стилизованный UL с этим кодом:
С https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent :
источник
Вы можете использовать JQuery. которые делают это очень просто.
Просто скачайте файл jQuery, добавьте jQuery в свой HTML
или вы можете перейти по ссылке онлайн:
и попробуйте это:
источник
Следующий метод является менее общим, чем другие, однако это замечательно, если вы уверены, что ваш последний дочерний узел div уже является текстовым узлом. Таким образом, вы не будете создавать новый текстовый узел, используя
appendData
MDN Reference AppendDataисточник
Почему бы просто не использовать setAttribute?
Тогда вы можете получить эти данные:
источник
сценарий Java
JQuery
Используйте
.html()
без каких-либо аргументов, чтобы увидеть, что вы ввели. Вы можете использовать консоль браузера для быстрого тестирования этих функций, прежде чем использовать их в своем коде.источник