JavaRush /Java блог /Java Developer /Срочно нужна помощь в решении задачи для студента
Денис Сава
9 уровень
Москва

Срочно нужна помощь в решении задачи для студента

Статья из группы Java Developer
Доброе время суток. Вопрос к специалистам. Ребенок учится в универе. Возникли проблемы с одной лабой, нужно срочно сделать. А я только на 7 уровне:) еще не понимаю.
Срочно нужна помощь в решении задачи для студента - 1
Задание: Создайте скрипт "Караоке", который выводит 5 слов по таймеру с задержкой 300 мс, , спустя 3000 мс весь текст исчезает и появляется новые 5 слов. Вот код который написал студент:

function delay(f, ms) {
return function() {
var savedThis = this;
var savedArgs = arguments;
setTimeout(function() {
f.apply(savedThis, savedArgs);
}, ms);
};
}
function f(x) {
document.write( x +" ");
}
var f1000 = delay(f, 300);
var f1500 = delay(f, 3000);
f1000("папа мама брат и я ");
f1500(", Вместе дружная семья");
Вторая строка должна появляться, а первая пропадать. Но первая не пропадает. В чем проблема?
Комментарии (5)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Стас Пасинков Уровень 26 Master
8 декабря 2018
да тут будь вы хоть на сотом уровне джавараша - это мало поможет)) потому что в задаче - джаваскрипт))) простите за офтоп :)
Денис Сава Уровень 9
24 ноября 2018
К сожалению говорят ваш код не пошел. Где то ошибка. Сделали по другому. Все равно спасибо что откликнулись.
Денис Сава Уровень 9
22 ноября 2018
Условия задачи взяты прям с методички, так что как есть. Огромное спасибо. Перешлю ребенку.
Ярослав Уровень 40 Master
22 ноября 2018

function clean() {
   document.body.innerHTML = "";
}
Это для очистки документа. Код довольно запутанный и явно не выполняет условия задачи. Условия задачи тоже немного размыты, ведь не указано ничего о словах: должны ли они вводиться, какие это слова должны быть, возможны ли дубликаты, а это очень дезориентирует. Предложу свой вариант:

var possibleWords = { "plant", "mother", "pen", "print", "stop", "sing", "forever", "start", "doing", "something" };
var nextWord = 0;

function printWords(count, delay) {
   for (var i = 0; i < count; i++) {
      setTimeout(function() {
        if (nextWord >= possibleWords.length)
           nextWord = 0;

         document.writeln(possibleWords[nextWord++]);
      }, delay*count);
   }
}

// script below
printWords(5, 300);
setTimeout(clean, 3000);
printWords(5, 300);
Писал без проверки, но должно заработать, а если нет, то где-то может быть небольшая ошибка, её можно справить, главное идею мою понять.