#javascript #html #string #dynamic #createelement
Вопрос:
Мне нужно вставить это html-дерево, когда я нажимаю кнопку
<div class='img-wrapper'> <img id='immagine_preview' width='200px' height='200px' data-id_immagine='1'><button type='button' class='rimuoviImg' ><span class='fa fa-times'></span></button></div>
Я попробовал этот код, но он возвращает мне тег тела с моим html внутри.
var stringToHTML = function (str) {
var parser = new DOMParser();
var doc = parser.parseFromString(str, 'text/html');
return doc.body;
};
Мне нужно динамически добавлять предыдущие html-элементы перед кнопкой загрузки (я использую метод before() с функцией stringToHTML внутри, и он работает). Есть более простой способ сделать это?. Потому что я узнал, что documen.createЭлемент не работает со сложным аргументом.
Спасибо всему сообществу за помощь, которую они оказали мне даже с моими предыдущими вопросами.
Ответ №1:
Вы можете создать переменную html с литералом шаблона и внутри нее написать свою семантику html, а затем использовать insertAdjacentHTML()
Комментарии:
1. Огромное спасибо
2. Пожалуйста. Я буду признателен, если вы выберете мой ответ в качестве принятого ответа.
Ответ №2:
Используйте строку шаблона, содержащую HTML, и при нажатии кнопки используйте insertAdjacentHTML
ее для добавления в существующий элемент.
const str = `
<div class="img-wrapper">
<img id="immagine_preview" width="200px" height="200px" data-id_immagine="1">
<button type="button" class="rimuoviImg">
<span class="fa fa-times"></span>
</button>
</div>
`
// Cache the element you want to markup to appear,
// and the button
const div = document.querySelector('div');
const button = document.querySelector('button');
// Add a click listener to the button, and insert
// the markup to the chosen element.
button.addEventListener('click', () => {
div.insertAdjacentHTML('beforeend', str);
});
<button>Click</button>
<div />
Ответ №3:
Вы можете просто добавить HTML-код во внутренний текст элемента:
document.querySelector('button').addEventListener('click', function() {
document.body.innerHTML = `<div class='img-wrapper'> <img id='immagine_preview' width='200px' height='200px' data-id_immagine='1'><button type='button' class='rimuoviImg' ><span class='fa fa-times'></span></button></div>`;
})
<button>Insert HTML</button>
Комментарии:
1. Хорошо, спасибо, это хорошо работает. Но как я мог позволить этому коду появиться там, где я хочу?
2. @Tonio Что ты имеешь в виду под «где я хочу»?
3. с вашим кодом html будет добавлен в конец текста
4.
document.body
Замените элементом, к которому вы хотите добавить HTML.