Циклы while в EJS отображаются в одной строке - PullRequest
0 голосов
/ 09 июня 2019

Я рендерил данные в EJS, и теперь, используя цикл while, я хочу просмотреть эти данные и отобразить их в одной строке. Например, предположим, что данные представляют собой массив объектов с атрибутами имени. У меня есть имена ['Боб', 'Крис', 'Сара']. После того, как я отправил данные в EJS, я хочу, чтобы появился Боб, а затем через некоторое время Боб исчезает, а затем появляется Крис, а затем появляется Сара.

На данный момент мой код выводит их все сразу по нескольким строкам, а не по одной за раз в одной строке, как я желаю.

<body>
    <% var current = 0; %>
    <% while (current < 2){ %>
        <h1> Hey <%= person[current].name %>, how are you doing? </h1>
    <%    current += 1;
    };%>
</body>

Вывод должен быть в одной строке: Эй, ТЕКУЩЕЕ ИМЯ, как дела? Тогда текущее имя должно просто меняться.

Вместо этого код выводит три строки, по одной для каждого имени. Кто-нибудь знает, как это исправить? Спасибо.

1 Ответ

0 голосов
/ 10 июня 2019

Я думаю, что вы путаете обработку шаблона (которая производит статический вывод) с динамическим обновлением элемента DOM.Последнее является большей проблемой для интерфейсной среды (хотя то, что вы предоставили, достаточно просто в vanilla JS).

Я хотел бы просто создать шаблон с заполнителем для имени, а затемиспользуйте таймер для обновления текста внутри:

setInterval(3000, function(){
    var span = document.getElementById('name-span');
    if ('textContent' in span) {
        span.textContent = person[current].name;
    } else {
        span.innerText = person[current].name;
    }
    current = (current + 1) % person.length;
}

Конечно, вам нужно найти лучший способ получить доступ к человеку и текущему, вместо использования глобалов.

...