Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
2 / 2 / 0
Регистрация: 11.08.2018
Сообщений: 31

Остановка и запуск "Mutationobserver"

11.12.2019, 20:04. Показов 4044. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова всем здравствуйте.
Друзья, подскажите пожалуйста по Mutationobserver...
Есть чекбокс, по клику на который срабатывает функция отслеживающая клики на этом чекбоксе и в случае, если там поставлен чек, то открывается скрытый "select" (он изначально пустой!), а если чек снимается, то этот "select" снова прячется.
Далее есть еще одна функция, которая по клику на этот "select" открывает альбом с картинками и по выбору (клику) на картинку, создает в этом selecte "option" со значением этой картинки , которое берется из базы данных, написанной на JSONe.
Далее есть 3 функция, которая отслеживает появление в selecte этого option с помощью "Mutationobserver" и как только он появляется, либо изменяется (на другой, или вообще я его удаляю, т.е. очищаю select), происходит выполнение определенного кода, связанного с value этого option.
Проблема заключается в следующем - как только я пытаюсь снять чек в первой функции и скрыть этот select, мне необходимо отключить отслеживание "Mutationobserver" в 3 функции, очистить скрываемый select, т.е. удалить в нем option и снова включить отслеживание "Mutationobserver".
Если не отключать отслеживание и просто очистить select, то "Mutationobserver" видит, что снова произошли изменения в select (пропал option) и пытается запустить функцию 3, в которой он должен считать value в selecte, а там нет option и выдает ошибку!
Как при снятии чека отключить отслеживание Mutationobserver, очистить select и снова включить отслеживание, другими словами, как из другой управлять работой Mutationobserver?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.12.2019, 20:04
Ответы с готовыми решениями:

Не получается отследить элемент (MutationObserver)
https://www.aliexpress.com/item/32847863500.html Я хочу запустить alert() при загрузке кода, в котором написана стоимость доставки. ...

Почему не работает? запуск при наведении курсора и остановка при потере фокуса курсором
Почему не работает? <script type="text/javascript"> window.onload = function(){ function soundSTAR() { ...

Анимация background - запуск и остановка по клику на одну кнопку
Я новичок, недавно столкнулся с редактированием jquery и у меня что-то не получается. У меня на странице анимированный с помощью css3...

21
2 / 2 / 0
Регистрация: 11.08.2018
Сообщений: 31
14.12.2019, 12:48  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Это Вам показал fixeri...P.S. Вы, само собой, разберетесь без чужих соплей, но пройдет время Вы вспомните эту тему. Произойдет это потому, что до Вас наконец дойдет что Вы закапываетесь. В этой теме я вижу, как Вы используете инструмент не по назначению, пытаясь залатать дыру в алгоритме. Дальше будет хуже. Отсюда совет - начните сначала, изучив перед этим ресурс, ссыль на который я дал выше.
Да, я видел код выше, но пока небыло времени с ним разобраться... На счет залатывания дыр в алгоритме - я не вижу ни каких дыр, еще раз говорю, что сам калькулятор уже написан полностью и он абсолютно рабочий, так, как я его и задумал. Сейчас же я пытаюсь сделать ему апгрейд, с большей частью блоков я уже разобрался, в которых так же выбор происходит по картинке по тому же принципу, но только у этих блоков просто нужно было выбрать картинку и вставить ее куда надо, а в данном случае, по этой картинке потом необходимо еще найти соответствующую карточку в базе и взять оттуда данные, в том числе и стоимость этого элемента и вставить ее в поток общего суммирования стоимости, которое происходит непрерывно, при изменении любого из параметров калькулятора, которых более 20. Сделать это возможно (ну я пока нашел только этот метод) с помощью mutationobserver - я пока с этим способом плохо знаком, но знаю, что у него есть способ остановки отслеживания изменений, но пока не знаю, как его грамотно прописать и применить в нужном мне месте. В остальном ни каких проблем нет. Но Вам всеравно спасибо, что не прошли мимо моего вопроса и попытались разобраться вместе со мной!

Добавлено через 12 минут
... и да, вот еще, я знаю, как решить эту проблему и она 100% будет работать, но меня этот вариант не устраивает - я могу определять на какой из select был произведен клик и открывать альбом с картинками для выбора не через this, а для каждого select в отдельности и тогда, когда уже будет выбрана картинка, добавлять в этот select option с персональным классом, далее, я уже могу его спокойно отследить, по предложенному Вами варианту сделать условие, что если option есть, то отслеживаем его изменение, а если нет, то..., но таких кодов надо тогда написать 4 штуки, для каждого из select - слишком много кода, от этого и хочу уйти и сделать код более универсальным!
0
2 / 2 / 0
Регистрация: 11.08.2018
Сообщений: 31
17.12.2019, 01:17  [ТС]
Всем спасибо за помощь, проблему решил самостоятельно, но с Вашими наводками - сделал проверку option не по id, или классу, а вот так:
JavaScript
1
const dsi1 = document.querySelector('.dsi1'); //это наш select
далее при клике на чекбокс, если чек стоит, запускаю отслеживание mutationobserver и уже внутри него выполняю проверку наличия option в DOM:
JavaScript
1
2
3
4
5
6
if (dsi1.selectedIndex != -1) {
  // если option имеется выполняю код...
}else{
  // иначе... выполняю весь код калькулятора, где данный option просто считывается,
  // так же предварительно пройдя проверку на его наличие, либо выполняется код без его учета
}
Ларчик-то просто открывался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2019, 01:17

MutationObserver и addEventListener
Вопрос из разряда философских: Почему addEventListener реализовали, так, что он вызывается, как метод у элемента. А чтобы вызвать...

Остановка и запуск служб
Привет. Задача - остановить и запустить службу с помощью питона Статус службы проверяю с помощью библиотеки psutil: ...

Запуск и остановка программы
Приветствую. Есть программа CTR необходимо её запускать если питание от сети при включение компьютера Если было питание от акб и стало...

Запуск и остановка бота
Доброго времени суток знатоки! Пишу потихоньку бота для телеграмм на Python И задался вопросом где его и как запустить и как потом...

Запуск и остановка по кнопке
Задача у меня такая,реализовать активацию лед лампочек по кнопке и по второй кнопке остановка,сколько гуглил,ничего не нашел int ledPins...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru