Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.11.2020, 16:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Вот это уж вам решать, выбирать ли за пользователя приближенное, считая, что он именно этого хочет, или не стоит.
Ответить с цитированием
  #12 (permalink)  
Старый 20.11.2020, 17:00
Аспирант
Отправить личное сообщение для maplol123@gmail.com Посмотреть профиль Найти все сообщения от maplol123@gmail.com
 
Регистрация: 30.06.2019
Сообщений: 41

laimas,
В моем случае, первый и второй список, относятся только к одному товару, который до этого был выбран, первый выбирается, если текст кнопки равен "Нет", второй список, если "1 сторона".

Третий и четвертый списки, к другому товару, с такой же зависимостью от текста кнопок "Нет" и "1 сторона".

Пятый и шестой - к третьему товару
Ответить с цитированием
  #13 (permalink)  
Старый 21.11.2020, 15:28
Аспирант
Отправить личное сообщение для maplol123@gmail.com Посмотреть профиль Найти все сообщения от maplol123@gmail.com
 
Регистрация: 30.06.2019
Сообщений: 41

laimas,
и еще. К примеру
//создание первого списка
let width_1 = [];
//добавление последующих значений к списку
for (let i = 100; i <= 800; i += 10) {
          width_1.push(i);
        }

//второй список, с сохраненным выбранным значением из первого 
//списка ($("#param_1 option:selected").text() - это из html при выборе нужного
//значения в option, оно присваивалось нулевому элементу массива width_2)

width_2 = [
          $("#param_1 option:selected").text(),
          100,
          150,
          225,
          200,
          250,
          300,
          350,
          400,
          450,
          500,
          550,
          600,
          700,
        ];

Теперь такой вопрос, уже задача проще. Как сделать проверку, если в первом списке (width_1) значение не входит во второй список (проверка начиная с первого элемента массива width_2), то как-нибудь выделить весь select второго списка или вывести ошибку?
Ответить с цитированием
  #14 (permalink)  
Старый 21.11.2020, 20:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Когда я читаю подобное, меня терзают сомнения - все ли здесь так, как следовало бы, не лишнее ли здесь.

Что я могу сказать. Не знаю что за продуты, как выбираются и что отправляется серверу. Но предположим, что ваши "безымянные" радио кнопки как-то это определяют, то есть серверу нужны два списка. Они у вас и есть два, которым перезаписывается содержимое. А всего таких пар данных для этих списков может быть до восьмерки на боку.

Даем первому списку имя "width", второму "height", под такими же именами определяем и две переменные со значением по умолчанию 0.

Список заполняется опциями, это цикл, в цикле проверяется текущее значение со значением window[this.name], и если равно, опция выбирается.

При выборе в списке значение его сохраняется в переменной - window[this.name] = this.value. А при сравнении, при построении списка уж как хотите, выбирайте ближайший или ... Ближайший или равный, это искать в массиве значение соответствующего списка до тех пор пока значение не будет больше window[select.name]. Берем предыдущий элемент и заканчиваем поиск - это будет либо равно window[select.name], либо ближайшее меньшее window[select.name] значение. Либо возвращаем 0, если ничего не найдено.

Но это все прелюдии, а остальное, то что у вас, это нечто. Скажите, как это может быть, что параметры товаров, которых есть определяемые значения администратором в базе или на худой конец в переменных, и на сервере, явно прописывают циферки в js-коде? Сервер должен отдавать клиенту эти данные, с ними он должен работать, а никак не

for (let i = 100; i <= 800; i += 10) ... и $("#param_1 option:selected").text().

Если это возможно, а у вас возможно, вы вообще не должны оперировать конкретными свойствами объекта данных для этих списков. Пусть ваши радио кнопки имеют значения 0 и 1. На сервере задаются параметры ширины и высоты для списков как диапазон с шагом. То есть, в базе прописано для значения 0: width => min = 100, max = 800, step = 10, height => min = 100, max = 600, step = 50, для значения 1 другие.

Например, сервер, это РНР (на другом языке будет по другому, что не суть важно), по этим параметрам готовится массив данных, который будет описывать все данные для вашего кода, в частности для списков:

$data = [
    0 => [
        'width'     => range($row->width->min, $row->width->max, $row->width->step),
        'height'    => range($row->height->min, $row->height->max, $row->height->step)
    ],
    1 => [
        'width'     => range($row->width->min, $row->width->max, $row->width->step),
        'height'    => range($row->height->min, $row->height->max, $row->height->step)
    ]
];


Это будут массивы значений для списков полученные по указанным диапазонам с указанным шагом. Эти данные отдаются клиенту как JSON. Данные, с которыми будет работать клиентский сценарий в текущий момент, определяются значением выбранной кнопки. В общем с таким подходом. А если width_1, width_2, let i = 100; i <= 800; i += 10, то это уже караул, не вникая что это вообще такое, даже не понять что тут есть что, и ломать мозги этим нет никакого желания.

Последний раз редактировалось laimas, 22.11.2020 в 08:25.
Ответить с цитированием
  #15 (permalink)  
Старый 26.11.2020, 01:23
Аспирант
Отправить личное сообщение для maplol123@gmail.com Посмотреть профиль Найти все сообщения от maplol123@gmail.com
 
Регистрация: 30.06.2019
Сообщений: 41

laimas,
Извините, что пришлось Вам хоть как-то в это вникать. Спасибо за помощь, я разобрался.
Ответить с цитированием
  #16 (permalink)  
Старый 26.11.2020, 01:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Да вникать то не во что, сыр-бор какой-то. Не делают так, нельзя так, такой код сопровождать, это проще выбросить и писать новый.
Ответить с цитированием
  #17 (permalink)  
Старый 26.11.2020, 01:34
Аспирант
Отправить личное сообщение для maplol123@gmail.com Посмотреть профиль Найти все сообщения от maplol123@gmail.com
 
Регистрация: 30.06.2019
Сообщений: 41

laimas,
Если Вам интересно, что за сайт, могу скинуть в лс ссылку. Точно будете в шоке (от костылей и кривизны)
Ответить с цитированием
  #18 (permalink)  
Старый 26.11.2020, 01:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Не буду, все не в штанишках рождаются. Но нужно сразу отходить от практики "все в куче".
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена radio на select banditman jQuery 15 08.03.2020 19:13
Выбор из option select при нажатии на кнопку на др. странице Artemyi Элементы интерфейса 9 29.09.2019 17:39
Как в oninput получить значения select? Jeick9 Events/DOM/Window 9 11.10.2014 20:18
выполнение ф-ии при изменении состояния radio MaxB Events/DOM/Window 5 24.06.2009 14:24
при выборе в 1-ом select соот.-щая инф. отображается в другом select celencer Общие вопросы Javascript 1 24.05.2009 20:38