Здравствуйте, у меня есть следующий код:
function updateData() {
var element = document.getElementById('elementId');
element.remove(); ** //Here i want to remove my elements**
return firebase.database().ref(varurl3).child('UserCount/count').once('value').then(function(snapshot) {
var username = snapshot.val();
for (var i = 1; i <= username; i++) {
var ref = firebase.database().ref(varurl3).child('Users').child(i).child('User');
ref.once('value', function(snapshot) {
var changedPost = snapshot.val();
var log = document.createElement('div');
log.setAttribute('id', 'elementId');
log.style.height = '75px';
log.style.width = '300px';
log.style.overflow = 'auto';
log.style.border = '1px solid #666';
log.style.backgroundColor = '#ccc';
log.style.padding = '8px';
log.style.position = 'relative';
log.style.left = '1400px';
log.style.top = '300px';
log.style.margin = '10px';
log.textContent = changedPost;
document.body.appendChild(log)
});
}
});
}
(async function looper() {
while (true) { // forever
await updateData();
await delay(2000);
}
})(); // execute looper
Моя функция вызывается каждые 2 секунды для извлечения значений из моей базы данных firebase и записи их в div каждые 2 секунды. Поэтому я создаю с помощью цикла for столько div, сколько у меня есть значений в моей базе данных. При повторном вызове функции из новой все элементы div с одинаковым идентификатором должны быть удалены, чтобы они не дублировались при следующем запуске.
Но эти элементы div не удаляются, и я получаю сообщение об ошибке:
Uncaught (в обещании) TypeError: элемент имеет значение null
Может ли кто-нибудь помочь мне, как я могу решить эту проблему?
getElementById()
может вернутьnull
; ваш код просто должен проверить это условие. - person Pointy   schedule 07.10.2020on()
вместоonce()
, чтобы Firebase активно вызывал ваш код, когда что-то менялось, вместо того, чтобы запрашивать обновления? - person Frank van Puffelen   schedule 07.10.2020