setInterval не повторяет изменение слова - PullRequest
0 голосов
/ 23 ноября 2018

Я понимаю JavaScript и хочу создать проект неинтерактивного словаря.Я пишу слово в качестве абзаца и меняю слово на определение, используя DOM в качестве функции.Когда я использую setInterval для запуска функции, она не повторяется.Почему?

'use strict';
//below is the function for the even
$(document).ready(function(){
//

function salutation(){
    document.getElementById("Salutation").textContent ="hello";


}
setInterval(salutation, 1000);
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>YOUR TITLE HERE</title>
    <link rel ="stylesheet" href="jquery.css">
    <script src="jquery.js" type="application/javascript"></script>
    <script src="handler.js" type="application/javascript"></script>
  </head>
  <body>  
   <h1>hello welcome to our dictionary</h1>

    <p>Come see what words we have to offer</p>
    <br>
    <p id = Salutation >1.Saluation</p>

  </body>
</html>

По какой-то причине код просто не будет повторяться, заставляя текст постоянно меняться между словом и определением.Почему?

1 Ответ

0 голосов
/ 23 ноября 2018

Возможно, вы неправильно понимаете природу setTimeout.Все, что он делает, это запускает функцию первого параметра с интервалом, заданным вторым параметром.Так как ваша функция всегда делает одно и то же, а именно, устанавливает атрибут textContent элемента Salutation на "hello", похоже, она ничего не делает.Нет такого альтернативного поведения по умолчанию;Вы должны добавить эту логику, используя какое-то условие.Например:

function salutation(elem) {
  elem.innerText = elem.innerText === "hello" ? "world" : "hello";
}

setInterval(salutation, 1000, document.getElementById("salutation"));
<h1>hello welcome to our dictionary</h1>
<p>Come see what words we have to offer</p>
<br>
<p id="salutation">1.Saluation</p>

Обратите внимание, что я удалил обработчик ready, добавил кавычки и пробелы вокруг атрибута id и поместил его в нижний регистр.Это соглашения по стилю, которые будут иметь значение в некоторых ситуациях, но в данном случае это не проблема, если предположить, что ваша функция setTimeout находится в той же области действия, что и ваша функция salutation (вам не хватало закрывающей скобки и скобок, что делало ее неясной).

Наконец, я добавил elem в качестве третьего параметра к вызову setTimeout в целях определения области видимости и избежания дополнительных вызовов DOM, но это также не является обязательным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...