Ответы пользователя по тегу JavaScript
  • Как удалить элемент options, если он выбран в другом Select?

    @hasalex
    разработчик
    htmL

    <select class="myselect" name="select1">
          <option value="1" selected>one</option>
          <option value="2">two</option>  
          <option value="3">three</option>  
          <option value="4">four</option>  
          <option value="5">five</option>  
          </select>
        <select class="myselect" name="select2">
          <option value="2" selected>two</option>  
          <option value="3">three</option>  
          <option value="4">four</option>  
          <option value="5">five</option>  
        </select>
        <select class="myselect" name="select3">
          <option value="1">one</option>  
          <option value="3" selected>three</option>  
          <option value="5">five</option>  
          <option value="6">six</option>  
        </select>


    JAVASCRIPT

    const check = (selects, event) => {
            const selected = new Set([event.target.value])
            selects.forEach(el => selected.add(el.value));
    
            selects.forEach(forRemoved => {
                const options = forRemoved.querySelectorAll(`option`)
                options.forEach(option => {
                    option.disabled = selected.has(option.value); 
                })
            })
          }
                              
    				document.addEventListener("DOMContentLoaded", () => {
              const selects = document.querySelectorAll(".myselect");
              selects.forEach(select => select.addEventListener("change", e => check(selects, e)))
    })




    В данном примере накидал вам, чтобы элемент выбранный везде дисаблился. Дальше можете расширять функционал как нужно (удалять/восстанавливать айтемы, дисаблить только у всех остальных и пр.)
    Ответ написан
    Комментировать
  • Каким образом я могу получить данные с сервера и обработав их в цикле отправить другие запросы?

    @hasalex
    разработчик
    накидаю общую идею:
    const anyFetch = async () => 
        fetch(url)
            .then(arr => arr.map(
                     id => fetch(url + id)
             ));
    
    const allData = Promise.All(anyFetch).then(arrOfFinishData => doSomething(arrOfFinishData));


    Идея следующая:
    1. первый фетч возвращает вам промис с массивом айдишников
    2. следующий чанк мапит айдишники в новые промисы, которые уже по каждому айдишниику вместо себя возвращают промис с данными.
    3. в итоге anyFetch там, где уже надо работать с конечными данными, засовываем в Promise.All, чтобы дождаться всех данных и в чанке делаем с этими данными doSomething
    Ответ написан
    Комментировать
  • Почему не срабатывает промис?

    @hasalex
    разработчик
    сделайте без if-else просто промис и посмотрите что там. Имхо первый раз возвращаете 0, второй раз уже значение какое есть
    Ответ написан
    Комментировать
  • Как реализовать ввод в input по маске?

    @hasalex
    разработчик
    Либо используйте pattern

    <input .....     pattern="..регулярное выражение..." />

    только по кроссбраузерности проверьте, подходит ли вам
    Ответ написан
    Комментировать