Надеюсь, это решит проблему:
Я добавил к нему этот фрагмент кода: ct < terms.length -1 && rotateTerm
. так что он не будет вызывать функцию rotateTerm
после последнего элемента
И я добавил массив timeDelay var timeDelay = [1000, 2000, 4000, 8000]
, чтобы включить разные задержки для разных предложений.
var terms = $("ul li");
function rotateTerm() {
var timeDelay = [1000, 2000, 4000, 8000];
var ct = $("#rotate").data("term") || 0;
console.log(terms.eq([ct]).text());
console.log(ct)
$("#rotate").data("term",
ct == terms.length -1 ? 0 : ct + 1).text(terms.eq([ct]).text())
.fadeIn().delay(timeDelay[ct]).fadeOut(200, ct < terms.length -1 && rotateTerm);
}
$(rotateTerm);
Или вы можете установить задержку в зависимости от длины текста
var terms = $("ul li");
function rotateTerm() {
var ct = $("#rotate").data("term") || 0;
const text = terms.eq([ct]).text()
const textLength = text.length;
console.log(textLength)
const timeDelay = textLength < 50 ? 2000 : textLength * 50
$("#rotate").data("term",
ct == terms.length - 1 ? 0 : ct + 1).text(text)
.fadeIn().delay(timeDelay).fadeOut(200, ct < terms.length - 1 && rotateTerm);
}
$(rotateTerm);