Как видно из названия, у меня возникли проблемы с доступом к элементу HTML, который был добавлен с помощью JavaScript.Я пытаюсь извлечь элемент DOM, используя document.getElementById ('sampleID') после добавления HTML-div с использованием JavaScript.Однако исходный код HTML не отражает внесенные изменения, поэтому я не могу получить новый элемент.
Приложение очень похоже на список задач, но отслеживает приложения, а не задачи.В элементе div каждого приложения есть флажок, и запрос POST все еще проходит, удаляя приложение из базы данных, но он не отображается на странице до обновления.
Единственная связанная концепцияЯ наткнулся на интерфейс MutationObserver для JavaScript, который, по-видимому, не позволяет получить доступ к добавленным элементам.
Все предложения приветствуются!
$('#applicationDelete').submit(function(event) {
event.preventDefault(); // Stops browser from navigating away from page
var names = [];
$(":checkbox").each(function () {
var isChecked = $(this).is(":checked");
if (isChecked) {
names.push($(this).attr("class"));
}
});
var data = { names: names }
console.log('Data: ' + names);
$.ajax({
type: 'POST',
contentType: 'application/json',
url: window.location + 'applications/delete',
data: JSON.stringify(data),
dataType: 'json',
success: function(res) {
if (res.response == 'success') {
var application;
for (i in names) {
application = document.getElementById(names[i]);
application.parentNode.removeChild(application);
}
}
}
});
});
РЕДАКТИРОВАТЬ:
function addApplication(application) {
const container = document.getElementsByClassName('applicationDelete')[0];
const appWrap = document.createElement('div');
appWrap.classList.add('application-wrapper');
// ADDED THIS LINE THANKS TO SUGGESTIONS!
appWrap.id = application.company;
const checkbox = document.createElement('div')
checkbox.classList.add('checkbox');
const check = document.createElement('input');
check.type = 'checkbox';
check.classList.add(application.company);
const app = document.createElement('div')
app.classList.add('application');
checkbox.appendChild(check);
appWrap.appendChild(checkbox);
appWrap.appendChild(app);
container.insertBefore(appWrap, container.childNodes[3]);
app.innerHTML = '\
Company: ' + application.company + '<br>\
Position: ' + application.position + '<br>\
Experience: ' + application.experience + '<br>\
Source: ' + application.source + '<br>';
}
Извиняюсь за код спагетти!Я уверен, что мое использование классов и идентификаторов далеко от правильного соглашения о кодировании, но вам, ребята, все же удалось обнаружить мою ошибку (даже не увидев метод addApplication).Спасибо!