Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.10.2020, 01:19
Новичок на форуме
Отправить личное сообщение для M4ksss Посмотреть профиль Найти все сообщения от M4ksss
 
Регистрация: 16.10.2020
Сообщений: 2

Не работает clearInterval
Есть заголовок который двигается по квадрату
Нужно, чтобы заголовок при клике на него ускорялся и при достижении 10 кликов на 11-й менял фразу на "Вы победили" и ОСТАНАВЛИВАЛСЯ.
Код работает нормально за исключением остановки. На 11-й клик фраза меняется, но заголовок продолжает движение. Прошу помощи. В чем ошибка, почему он не останавливается и как решить?
<head>
<meta charset="UTF-8">
<title> INTERACTIVE PAGE <3 </title>
</head>
<body>
<h1 id="heading"> Hello, world! </h1>
<script src="https://code.jquery.com/jquery-2.1.0.js"></script>
<script>
var leftOffset = 0;
var downOffset = 0;
var rightOffset = 200;
var topOffset = 200;
var moveHeading = function () {
if (leftOffset <= 200) {
$("#heading").offset({left: leftOffset});
leftOffset++;
downOffset = 0;
} else if (downOffset <= 200) {
$("#heading").offset({top: downOffset});
downOffset++;
rightOffset = 200;
} else if (rightOffset >= 0) {
$("#heading").offset({left: rightOffset});
rightOffset--;
topOffset = 200;
} else if (topOffset >= 0) {
$("#heading").offset({top: topOffset});
topOffset--;
} else leftOffset = 0
};
var fast = 1000;
var moveInterval = setInterval(moveHeading, 1000);
var clickNumbers = 1;
var clicks = function () {
if (clickNumbers < 10) {
clearInterval(moveInterval);
var moveIntervalSecond = setInterval(moveHeading, fast = fast*0.5 );
$("#heading").text(clickNumbers);
clickNumbers++;
}
else {
$("#heading").text("Вы победили!!!");
clearInterval(moveIntervalSecond);
}
};
$("h1").click(clicks)

</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 16.10.2020, 07:28
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

if (clickNumbers < 10) {
  clearInterval(moveInterval);
  var moveIntervalSecond = setInterval(moveHeading, fast = fast*0.5 );
  $("#heading").text(clickNumbers);
  clickNumbers++;
}

Вы moveInterval очищаете, а moveIntervalSecond - нет. Просто переназначаете. Но старые вызовы продолжают работать.
Зачем вообще нужен moveIntervalSecond?
Ответить с цитированием
  #3 (permalink)  
Старый 16.10.2020, 11:50
Новичок на форуме
Отправить личное сообщение для M4ksss Посмотреть профиль Найти все сообщения от M4ksss
 
Регистрация: 16.10.2020
Сообщений: 2

Для того, чтобы по клику увеличивать скорость движения заголовка. Или можно как-то по-другому увеличить скорость не удаляя moveInterval и не добавляя moveIntervalSecond?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS: работает на сервере, не работает из папки -majestic- Общие вопросы Javascript 2 02.08.2012 14:41
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11