Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 22.12.2020
Сообщений: 5

Проблема с функцией setTimeout

05.09.2022, 17:59. Показов 784. Ответов 4

Студворк — интернет-сервис помощи студентам
Написал код для проверки существования блока на сайте. Функция setTimeout(TestBlock, 1000); не делает нужную задержку.
Также почему-то не выполняется инкремент переменной iteratuon. В чем ошибка кода?

Код:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    'use strict';
    // Your code here...
 
    var status = false;
 
    function TestBlock() {
        if (!document.querySelector('#top-level-buttons-computed > ytd-button-renderer:nth-child(5)')) {
            console.log('меня нет на странице');
            status = false;
        } else {
            console.log('я присутствую');
            status = true;
        }
    }
 
    console.log('Запуск скрипта');
    while (true) {
        var iteratuon = 0;
        setTimeout(TestBlock, 1000); // не работает
        iteratuon++; // не выполняется
        console.log('Итерация -', iteratuon);
        if (status) break;
        if (iteratuon === 10) break;
    }
 
    document.querySelector('#top-level-buttons-computed > ytd-button-renderer:nth-child(5)').remove();
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.09.2022, 17:59
Ответы с готовыми решениями:

Проблема с SetTimeout
Доброго времени суток. Недавно начал изучать JS. Есть такой небольшой код: $(document).ready(function() { ...

Проблема с функцией
Скажите как ее решить код ненадо хотябы строчку этой функции как будет выглядить

Проблема с функцией
def(x, y): i = 0 while i != y: cls() n1 = random.randint(1, x) n2 = random.randint(1, x) ...

4
250 / 184 / 58
Регистрация: 12.03.2021
Сообщений: 1,043
05.09.2022, 18:02
JavaScript
1
setTimeout(TestBlock(), 1000);
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
05.09.2022, 21:20
Лучший ответ Сообщение было отмечено PoolSmoke как решение

Решение

PoolSmoke, у вас на каждой итерации цикла while заново объявляется переменная с говорящим именем iteratuon, поэтому цикл будет выполняться бесконечно. Код запускать не стал, он просто повесит браузер. Как вы представляете себе "нужную задержку"? Код, следующий за вызовом setTimeout, должен ждать секунду? Если да, то setTimeout не так работает.
0
1 / 1 / 0
Регистрация: 22.12.2020
Сообщений: 5
06.09.2022, 09:23  [ТС]
Переписал код, спасибо за поддержку.


JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'use strict';
 
console.log('[Script] Запуск скрипта');
 
function TestBlock() {
    if (!document.querySelector('#top-level-buttons-computed > ytd-button-renderer:nth-child(5)')) {
        console.log('[Script] меня нет на странице');
    } else {
        console.log('[Script] я присутствую');
        document.querySelector('#top-level-buttons-computed > ytd-button-renderer:nth-child(5)').remove();
        console.log('[Script] удалено');
        clearInterval(timerId);
    }
}
 
let timerId = setInterval(TestBlock, 500);
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
06.09.2022, 10:18
PoolSmoke, вариант с setTimeout:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"use strict";
 
console.log("[Script] Запуск скрипта");
/*
 *@param {string} selector - селектор
 *@param {number} [maxTime] - максимальное время ожидания. Необязательный
 *@param {number} [startTime] - не надо явно задавать
 *
 */
function testBlock(selector, maxTime = 30, startTime = Date.now()) {
  const element = document.querySelector(selector);
  if (!element) {
    console.log("[Script] меня нет на странице");
    if (Date.now() - startTime > maxTime * 1000) {
      console.log(`[Script] меня нет ${maxTime} секунд. Не ждите меня.`);
      return;
    }
    setTimeout(() => {
      testBlock(selector, maxTime, startTime);
    }, 500);
  } else {
    console.log("[Script] я присутствую");
    element.remove();
    console.log("[Script] удалено");
  }
}
 
testBlock("#top-level-buttons-computed > ytd-button-renderer:nth-child(5)");
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2022, 10:18
Помогаю со студенческими работами здесь

Проблема с функцией
Всем привет. Делая небольшой проект, натыкаюсь на некую проблему с присваиванием. Вот код для исследования моей проблемы: list_list =...

Проблема с функцией
#include <iostream> #include <cmath> #include <windows.h> #include <stdlib.h> #include <iomanip> using namespace std; ...

Проблема с функцией
Помогите пожалуйста , в чем заключается ошибка? И как сделать так чтобы при вводе "mining stop" Функция выключалась? :help: ...

Проблема с функцией find
неожиданный трабл x=0.1:0.1:100; find(x==16) ans = 160 find(x==17) ans = 1×0 empty double row vector find(x==18) ans = ...

Проблема с функцией пользователя.
Доброй ночи, форумчане. Помогите пожалуйста определить в чем ошибка: #include <iostream> using namespace std; int sum(int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru