Непрерывно изменять текст в элементе

Привет всем, у меня есть следующий код:

var names = Array('John', 'Craig', 'Jim', 'Nick', 'Stuart');

$("#pickName").on('click', function () {
    //pickName();
    var name = names[Math.floor(Math.random() * names.length)];
    alert(name);
    names.splice($.inArray(name, names), 1);
    $('#' + name).remove();
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
    <li id = "John">John</li>
    <li id = "Craig">Craig</li>
    <li id = "Stuart">Stuart</li>
    <li id = "Nick">Nick</li>
    <li id = "Jim">Jim</li>
</ul>

<a id = "pickName">Click Me</a>
<h1 id = "randomName"></h1>

Который, когда я нажимаю на #pickName, выбирает имя из массива и отображает его в окне предупреждения, а затем удаляет его из массива и из списка <ul>. Это все хорошо, но я бы хотел, чтобы тег H1 (#randomName) прокручивался и «мигал» всеми оставшимися именами (постоянно, пока я не нажму #pickName) .

Я пытался выполнить поиск в Интернете для этого, но я не могу придумать, как сказать, что я пытаюсь сделать!

Может ли кто-нибудь помочь?

Это javascript, а не java. Используйте правильный тег.

f1sh 01.02.2019 16:10

Если вам нужен повторяющийся код, посмотрите на setInterval().

Daniel Beck 01.02.2019 16:20

и посмотрите на Math.random()

Calvin Nunes 01.02.2019 16:22

простой рабочий пример

gaetanoM 01.02.2019 16:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете сделать это с помощью setInterval и, сохраняя глобальный счетчик, также позаботьтесь о том, чтобы взять модуль этого счетчика с длиной вашего массива, чтобы избежать индексации за пределами границ.

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

const names = Array('John', 'Craig', 'Jim', 'Nick', 'Stuart');

const h1$ = $('#randomName');
let idx = 0;

setInterval(() => {
  h1$.text(names[idx++ % names.length]);
}, 200);

$("#pickName").on('click', function () {
    const name = names[Math.floor(Math.random() * names.length)];
    names.splice($.inArray(name, names), 1);
    $('#' + name).remove();
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
    <li id = "John">John</li>
    <li id = "Craig">Craig</li>
    <li id = "Stuart">Stuart</li>
    <li id = "Nick">Nick</li>
    <li id = "Jim">Jim</li>
</ul>

<a id = "pickName">Click Me</a>
<h1 id = "randomName"></h1>

Точно так же, как jo_va, но со случайными именами:

var names = Array('John', 'Craig', 'Jim', 'Nick', 'Stuart');

function pickName()
{
    return names[Math.floor(Math.random() * names.length)]
}

$("#pickName").on('click', function () {
    //pickName();
    var name = pickName();
    alert(name);
    names.splice($.inArray(name, names), 1);
    $('#' + name).remove();
});

setInterval(function(){
    $("#randomName").text(pickName());
}, 200);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
    <li id = "John">John</li>
    <li id = "Craig">Craig</li>
    <li id = "Stuart">Stuart</li>
    <li id = "Nick">Nick</li>
    <li id = "Jim">Jim</li>
</ul>

<a id = "pickName">Click Me</a>
<h1 id = "randomName"></h1>

Тем не менее, я рекомендую вам найти более устойчивый способ управления вашими элементами, а не давать идентификаторы <li>, соответствующие их содержанию. Если это действительно не предназначено для статического использования :)

Другие вопросы по теме