Задать вопрос
  • Регулярка для проверки select, как правильно?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const select = document.querySelector('select');
    const reg = /^\d\d\. /;

    Как проверить, что option должен быть скрыт:

    const mustBeHidden = el => !reg.test(el.text);
    // или
    const mustBeHidden = el => el.textContent.search(reg) !== 0;
    // или
    const mustBeHidden = el => el.innerText.match(reg) === null;
    // или
    const mustBeHidden = el => !~-el.innerHTML.split(reg).length;

    Как переключать видимость option'а:

    const toggle = el => el.hidden = mustBeHidden(el);
    // или
    const toggle = el => el.style.display = mustBeHidden(el) ? 'none' : '';
    // или
    const toggle = el => el.style.setProperty('display', mustBeHidden(el) ? 'none' : '');
    // или
    const toggle = el => el.style.cssText += `display: ${mustBeHidden(el) ? 'none' : 'block'}`;
    // или
    const toggle = el => el.setAttribute('style', mustBeHidden(el) ? 'display: none' : '');
    // или (надо будет добавить в стили .hidden { display: none; })
    const toggle = el => el.classList.toggle('hidden', mustBeHidden(el));

    Переключаем:

    Array.prototype.forEach.call(select.options, toggle);
    
    // или
    
    for (const n of select.children) {
      toggle(n);
    }
    
    // или
    
    for (let i = 0; i < select.length; i++) {
      toggle(select[i]);
    }
    
    // или
    
    (function next(i, n = select.item(i)) {
      n && (toggle(n), next(-~i));
    })(0);
    
    // или
    
    select.querySelectorAll('option').forEach(toggle);
    Ответ написан
    Комментировать