#javascript #for-loop #foreach
Вопрос:
Я запросил свою базу данных firebase, чтобы подсчитать количество людей, подписавшихся на темы. Я получил результаты в console.log() и хотел бы отобразить их на веб-странице с номером пользователя div. В приведенном ниже коде рядом с каждой темой отображается один и тот же номер, даже если под каждой темой в console.log () отображается правильный номер. Как мне это исправить?
Это мой HTML-код:
<div class="rh_topic" title="Title" ></div>
<div class="customerNumber"></div>
Это мой код в моем файле javascript.
function countSubscribers () {
const topics = document.querySelectorAll(".rh_topic");
topics.forEach(topic => {
let number = topic.title;
const ref = firebase.database().ref('topics/' number);
ref.once("value")
.then(function(snapshot) {
console.log(topic.title);
console.log(snapshot.numChildren());
let customers = snapshot.numChildren();
const elements = document.getElementsByClassName('customerNumber');
Array.prototype.forEach.call(elements, function(element) {
element.textContent = customers;
});
});
});
}
countSubscribers();
Ответ №1:
для упрощения вы можете просто использовать
elements.map((elements, indexEl) => {
elements.innerText = customers
return true;
})
Комментарии:
1. Я попробовал это, и я получаю эту ошибку в консоли: «Uncaught (в обещании) Ошибка типа: elements.map не является функцией»
2. elements.map((элемент, индекс) => { элемент.внутренний текст = клиенты возвращают значение true; }) Неправильно на отображенных «элементах» удалите «s». Но я уверен, что ошибка не в этом, вы можете показать два журнала: ? console.log(тема.заголовок); console.log(снимок.numChildren()); ошибка означает, что переменная «элементы» равна нулю или не определена, если посмотреть на ваш код по адресу : <div класс=»Номер пользователя»><div класс=»Номер пользователя»></div> const элементы = document.getElementsByClassName («Номер пользователя»); это означает, что HTML не смонтирован или загружен. ваш код вызывается при загрузке страницы ?
3. Внес поправку, но все равно получаю ту же ошибку. Да, я вижу оба журнала. Если вы посмотрите на мой код выше, в элемент <div class=»CustomerNumber»><div class=»CustomerNumber»></div> вводится число, но это либо первое, либо последнее число, потому что эти два являются одинаковыми. Я знаю, что я должен перебирать клиентов и записывать каждое число в элемент. Я просто не могу правильно структурировать цикл.