Как можно улучшить циклическое повторение эффекта набора текста в коде JS, если стандартный цикл while не работает? Вот часть кода для примера:
```javascript
var quality = document.getElementById("quality");
var i = 0;
var txt = "Креативность";
var speed = 85;
var x = 0;
function typeWriter() {
if (i < txt.length) {
quality.innerHTML += txt.charAt(i);
i++;
setTimeout(typeWriter, speed);
}
}
txt = "Креативность";
typeWriter();
setTimeout(() => {
quality.innerHTML = "";
txt = "000000000000Эффективность";
typeWriter();
setTimeout(() => {
quality.innerHTML = "";
txt = "0000000000000000000000000Индивидуальность";
typeWriter();
}, 2500);
}, 2000);
```
Для создания эффекта бесконечной печати вам нужно внести некоторые изменения в ваш код. Вместо использования setTimeout внутри функции typeWriter, вы можете изменить функцию typeWriter так, чтобы она сбрасывала переменные i и txt каждый раз, когда текст полностью набран.
Пример:
```javascript
var quality = document.getElementById("quality");
var i = 0;
var txt = "";
var speed 85;
function typeWriter() {
quality.innerHTML += txt.charAt(i);
i++;
if(i == txt.length) {
i = 0;
quality.innerHTML = "";
}
setTimeout(typeWriter, speed);
}
txt = "Креативность";
setInterval(() => {
txt = "Креативность";
}, 3000);
typeWriter();
```
Таким образом, этот код будет продолжать циклически повторяться, набирая текст "Креативность" каждые 3 секунды.
Надеюсь, это поможет вам улучшить циклическое повторение эффекта набора текста в вашем коде JS.
<pre><code class="javascript">class Typewriter {
constructor(element, text, speed) {
this.element = element;
this.text = text;
this.speed = speed;
this.index = 0;
}
start() {
this.type();
}
type() {
if (this.index < this.text.length) {
this.element.innerHTML += this.text.charAt(this.index);
this.index++;
setTimeout(() => this.type(), this.speed);
} else {
this.index = 0;
this.element.innerHTML = "";
setTimeout(() => this.type(), this.speed);
}
}
}
const qualityElement = document.getElementById("quality");
const TEXT = "Креативность Эффективность Индивидуальность ";
const SPEED = 85;
const typewriter = new Typewriter(qualityElement, TEXT, SPEED);
typewriter.start();</code></pre>