Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обработка выбора элемента списка (https://javascript.ru/forum/events/83301-obrabotka-vybora-ehlementa-spiska.html)

Igal 12.11.2021 12:17

Обработка выбора элемента списка
 
Есть сайт https://zakrepi.ru/categories/instrument-rybolova? на открывающейся странице есть список "Показывать по". Когда на форме мышкой изменяю значение страница обновляется и количество товара меняется. Но! нигде ни могу найти какая функция при этом вызывается и как вообще они это сделали если <select> не запечатан в <form>.

Нужно скриптом (он будет подставлен перед </body>) изменить количество отображаемого товара на странице.

На данный момент перепробовал функции имитации нажатия мышкой: https://askdev.ru/q/kak-imitirovat-s...ascript-19669/
принудительно устанавливая значение в списке перед вызовом функции имитации нажатия мышкой. Ничего не получилось.

ksa 12.11.2021 12:34

Цитата:

Сообщение от Igal
и как вообще они это сделали если <select> не запечатан в <form>

Могли просто использовать событие change на этом select...

Igal 12.11.2021 12:39

Цитата:

Сообщение от ksa (Сообщение 541368)
Могли просто использовать событие change на этом select...

Они могли бы так сделать? или я могу это изменить?
Дело в том, что я уже 2-й день парюсь и не могу понять как они вообще это сделали!? Где та функция которую они вызывают? Если найду функцию, то вызвать ее из скрипта проблем не будет!

рони 12.11.2021 12:56

Цитата:

Сообщение от Igal
Нужно скриптом (он будет подставлен перед </body>) изменить количество отображаемого товара на странице.

const event = new Event("change", {bubbles: true}),
      select = document.querySelector('[data-set-pagination]');
      select.value = 24;
      select.dispatchEvent(event);

Igal 12.11.2021 13:04

Цитата:

Сообщение от рони (Сообщение 541370)
const event = new Event("change", {bubbles: true}),
      select = document.querySelector('[data-set-pagination]');
      select.value = 24;
      select.dispatchEvent(event);

НЕТ! Не получается. Значение в списке меняется (и 24 и 36 ставится), а количество отображаемого товара остается "по умолчанию" 12.

рони 12.11.2021 13:26

Igal,
браузер какой?

Igal 12.11.2021 13:26

Цитата:

Сообщение от рони (Сообщение 541372)
Igal,
браузер какой?

Crom

Igal 12.11.2021 13:27

Цитата:

Сообщение от рони (Сообщение 541372)
Igal,
браузер какой?

Chrome

Igal 12.11.2021 13:34

Цитата:

Сообщение от рони (Сообщение 541372)
Igal,
браузер какой?

Подождите, я не прав! Загружаю текст страницы в 1С, добавляю скрипт, отправляю на формирование DOM дерева. А 1С, по описанию работает на IE, вот только какой версии не известно.

рони 12.11.2021 14:32

Igal,
как вариант ...
var event = document.createEvent("Event");
      event.initEvent("change", true, true);
      var select = document.querySelector('[data-set-pagination]');
      select.value = 24;
      select.dispatchEvent(event);


Часовой пояс GMT +3, время: 11:23.