Как я могу отображать результаты запросов js на веб-странице

#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> вводится число, но это либо первое, либо последнее число, потому что эти два являются одинаковыми. Я знаю, что я должен перебирать клиентов и записывать каждое число в элемент. Я просто не могу правильно структурировать цикл.