Бесконечно выполняется скрипт JS
В общем-то я не силен в javascript, но с помощью chatGPT я пишу себе расширение для браузера. Суть в том, что скрипт создает поле, в которое я ввожу количество итераций, которое нужно проделать. После нажатия клавиши enter или кнопки принять, он начинает выполнять итерации. Страница с каждым нажатием на кнопку "Принять" обновляется. Скрипт вроде как записывает все локальное хранилище браузера и берет оттуда информацию, но в итоге выполнение скрипта продолжается до бесконечности. В чем проблема? chatGPT уже ничего не понимает, что написал и отказывается находить проблему
var intervalId; // Объявляем переменную для хранения идентификатора интервала
// Получаем ссылку на таблицу
var table = document.getElementById("table1");
// Создаем поле ввода перед таблицей
var inputField = document.createElement("input");
inputField.setAttribute("type", "number");
inputField.setAttribute("placeholder", "Введите количество нажатий");
table.parentNode.insertBefore(inputField, table);
// Функция для эмуляции клика по radio и кнопке "Принять"
function emulateClicks() {
var count = localStorage.getItem("count"); // Получаем количество нажатий из локального хранилища
if (!count) { // Если количество нажатий не сохранено
count = parseInt(inputField.value); // Берем значение из поля ввода
if (isNaN(count) || count <= 0) { // Проверяем, что введено корректное число
alert("Пожалуйста, введите корректное положительное число.");
return;
}
localStorage.setItem("count", count); // Сохраняем значение в локальное хранилище только один раз перед началом выполнения цикла
} else {
count = parseInt(count); // Преобразуем сохраненное значение в число
}
var selectedRadio = document.querySelector("input[type='radio']:checked");
if (!selectedRadio) { // Если радио не выбрано
alert("Пожалуйста, выберите вариант из списка.");
return;
}
var clickCount = parseInt(localStorage.getItem("clickCount")); // Получаем сохраненное количество нажатий
if (isNaN(clickCount)) { // Если количество нажатий не сохранено в локальном хранилище
clickCount = 0; // Инициализируем счетчик нажатий
}
intervalId = setInterval(function() {
selectedRadio.click(); // Эмулируем клик по выбранному radio
document.getElementById("submit-trips").click(); // Эмулируем клик по кнопке "Принять"
clickCount++; // Увеличиваем счетчик нажатий
localStorage.setItem("clickCount", clickCount); // Сохраняем обновленное количество нажатий в локальном хранилище
if (clickCount >= count) { // Если выполнено нужное количество нажатий
clearInterval(intervalId); // Останавливаем интервал
localStorage.removeItem("count"); // Удаляем сохраненное количество нажатий из локального хранилища
localStorage.removeItem("clickCount"); // Удаляем сохраненное количество нажатий из локального хранилища
localStorage.removeItem("selectedRadioId"); // Удаляем сохраненный идентификатор выбранного радио из локального хранилища
}
}, 1000); // Интервал в 1 секунду
// Обновляем значение count в локальном хранилище перед каждым выполнением скрипта
localStorage.setItem("count", count);
// Выбираем сохраненный радио перед началом эмуляции нажатий
var selectedRadioId = localStorage.getItem("selectedRadioId");
if (selectedRadioId) {
var selectedRadio = document.getElementById(selectedRadioId);
if (selectedRadio) {
selectedRadio.checked = true; // Выбираем сохраненное радио
}
}
}
// Назначаем обработчик события на радио кнопки для сохранения выбранного радио
var radioButtons = document.querySelectorAll("input[type='radio']");
radioButtons.forEach(function(radio) {
radio.addEventListener("click", function() {
localStorage.setItem("selectedRadioId", this.id); // Сохраняем идентификатор выбранного радио в локальном хранилище
});
});
// Назначаем функцию emulateClicks на кнопку "Принять"
document.getElementById("submit-trips").addEventListener("click", emulateClicks);