Как заменить слова в абзаце после указанного интервала? с js - PullRequest
0 голосов
/ 02 мая 2020

Скажем, у меня есть такой абзац; <p class="some-text">This is just a random paragraph for example use. This is just a random paragraph for example use. This is just a random paragraph for example use. This is just a random paragraph for example use. This is just a random paragraph for example use.</p>

И я хочу заменить весь «абзац» на «текст», и я знаю, что можно манипулировать строками , используя .replace(" paragraph", " text"), но это целый абзац. Я также хочу, чтобы текст изменялся с задержкой в ​​5 секунд, но я получаю взамен код ниже textToChange.replace is not a function. Как я могу go об этом с целым параграфом?

function replaceWords() {
  const toChange = document.querySelector("some-text");

  const fixedWords = toChange
    .replace(" paragraph", " text")


  toChange.innerHTML = fixedWords;
}
setTimeout(replaceWords, 5000); 

Ответы [ 4 ]

0 голосов
/ 02 мая 2020

document.querySelector("some-text"); будет document.querySelector(".some-text"); для класса необходимо добавить . перед именем класса

toChange.replace не является функцией, это будет toChange.innerHTML

function replaceWords() {
  const toChange = document.querySelector(".some-text");

  const fixedWords = toChange.innerHTML.replace(" paragraph", " text")
  toChange.innerHTML = fixedWords;
}
setTimeout(replaceWords, 5000); 
<p class="some-text">This is just a random paragraph for example use. This is just a random paragraph for example use. This is just a random paragraph for example use. This is just a random paragraph for example use. This is just a random paragraph for example use.</p>
0 голосов
/ 02 мая 2020

Я получаю взамен следующий код: toChange.replace is not a function.

Это потому, что toChange не строка, а элемент HTML.

Заменить

const fixedWords = toChange
    .replace(" paragraph", " text")

на

const fixedWords = toChange.innerHTML
    .replace(" paragraph", " text")
0 голосов
/ 02 мая 2020

вам нужно innerHTML абзаца перед заменой и используйте /textToBeReplaced/g, чтобы заменить все вхождения. Также в document.querySelector вы должны передать . с именем класса, таким как document.querySelector(".some-text");

function replaceWords() {
  const toChange = document.querySelector(".some-text");
  const fixedWords = toChange.innerHTML.trim().replace(/paragraph/g, " text")
  toChange.innerHTML = fixedWords;
}
setTimeout(replaceWords, 5000);
<p class="some-text">This is just a random paragraph for example use. This is just a random paragraph for example use. This is just a random paragraph for example use. This is just a random paragraph for example use. This is just a random paragraph for example use.</p>
0 голосов
/ 02 мая 2020

Вам нужно извлечь текст (внутренний HTML) из элемента:

function replaceWords() {
  const toChange = document.querySelector("some-text");

  const fixedWords = toChange.innerHTML.replace(" paragraph", " text")
  toChange.innerHTML = fixedWords;
}
setTimeout(replaceWords, 5000); 
...