Распределение по инпутам
Всем привет! У меня такая проблема, которую решить не может даже чатгпт. В общем, я хочу сделать распределение артистов в инпуты. Есть такой код:
const primaryArtistElements = xmlDoc.querySelectorAll('PrimaryArtist');
primaryArtistElements.forEach((artist, index) => {
const inputId = `line${index}primary_artist`;
const primaryArtist = artist.textContent.trim();
// Используем функцию для нахождения элемента с учетом динамически добавленных полей
findElementById(inputId, function(inputElement) {
setValueOrError(inputElement, primaryArtist, `Не удалось найти поле с ID "${inputId}" на странице.`);
});
});
// Функция для поиска элемента по id с учетом динамически добавленных полей
function findElementById(id, callback) {
const observer = new MutationObserver((mutationsList, observer) => {
mutationsList.forEach((mutation) => {
if (mutation.type === 'childList') {
const element = document.getElementById(id);
if (element) {
observer.disconnect(); // Отключаем наблюдение после нахождения элемента
callback(element);
}
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
// Если элемент уже на странице, сразу вызываем callback
const element = document.getElementById(id);
if (element) {
observer.disconnect();
callback(element);
}
}
line${index}primary_artist
- id инпутов, где index
это номер инпута.
Не знаю почему, но когда у меня указано 2 артиста <PrimaryArtist>Артист 1</PrimaryArtist>
и <PrimaryArtist>Артист 2</PrimaryArtist>
то в первый инпут вставляется только первый артист, вторые инпуты игнорируются польностью. Система инпутов такова, как только в инпуте написать 1 символ то сайт(не мой) создает новый инпут с айди line${index}primary_artist
.
Ожидал что скрипт вставит по одному артисту в инпуты с айди line${index}primary_artist
, но в итоге вставляется только 1 артист в 1 инпут, остальные артисты в другие инпуты не вставляются.