Необходимо извлекать значения из нескольких флажков в массив и сохранять его как переменную

#javascript #jquery #html #css

#javascript #jquery #HTML #css

Вопрос:

У меня есть модальный, который я использую для задания coding boot camp —

У меня в списке указаны 7 дней недели, а также параметры выходных / будних дней.

Я подумал, что мог бы использовать Jquery .each и CSS:проверено, чтобы извлекать значения, которые я присвоил каждому из этих входных данных, но, похоже, я делаю что-то не так, так как каждый раз, когда я пытаюсь записать в консоль массив, в который я нажимаю, — он возвращает пустой массив.

Это мой первый пост о StackOverflow, и я новичок в программировании, пожалуйста, будьте осторожны 🙂

Заранее приношу извинения за синтаксис и форматирование. Как я уже сказал, я супер новичок и занимаюсь кодированием всего около 1,5 месяцев.

Я попытался присвоить всем флажкам разные идентификаторы и извлекать значения одно за другим в массив, я также попытался присвоить им одно и то же имя, чтобы я мог использовать функцию CSS checked, чтобы извлекать их все сразу, используя .each и this . Ни то, ни другое, похоже, не сработало

 //below is the check box portion of the modal//

<div class="form-check form-check-inline">
        <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Monday">
        <label for="Monday">Monday</label>
      </div>
      <div class="form-check form-check-inline">
        <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Tuesday">
        <label for="Tuesday">Tuesday</label>
      </div>
      <div class="form-check form-check-inline">
            <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Wednesday">
            <label for="Wednesday">Wednesday</label>
    </div>
    <div class="form-check form-check-inline">
            <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Thursday">
            <label  for="Thursday">Thursday</label>
    </div>
    <div class="form-check form-check-inline">
            <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Friday">
            <label  for="Friday">Friday</label>
    </div>
    <div class="form-check form-check-inline">
            <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Saturday">
            <label  for="Saturday">Saturday</label>
    </div>
    <div class="form-check form-check-inline">
            <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Sunday">
            <label for="Sunday">Sunday</label>
    </div>
    <div class="form-check form-check-inline">
      <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Weekday">
      <label for="Weekday">Weekday</label>
    </div>
    <div class="form-check form-check-inline">
    <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Weekend">
    <label  for="Weekend">Weekend</label>
    </div>


// here is where I try to call the values of which boxes are checked back//

$("#submitButton").on("click", function () {
    event.preventDefault();
            var  daysOfWeek1 = [];
                  $.each($("input[name='dayOfWeek']:checked"), function(){
                    daysOfWeek1.push($(this).val());
                  });

      console.log(daysOfWeek1)

    });
 

Я хотел бы получить обратно массив, содержащий значения (набор строк), которые я ввел для каждого параметра флажка, и иметь возможность сохранять его в переменной и консоли.также запишите его.

Сейчас я получаю только пустой массив

Комментарии:

1. вы пробовали console.log(daysOfWeek1) внутренний $.each цикл?

2. Вы так близко! Как и многие из наших самых больших проблем в коде, все сводится к одной небольшой опечатке 😉

Ответ №1:

Это еще проще — просто используйте map , а затем преобразуйте его в массив (чтобы удалить лишние свойства), используя синтаксис spread:

 $("#submitButton").on("click", function() {
  event.preventDefault();
  var daysOfWeek1 = [...$("input[name='daysOfWeek']:checked").map((i, el) => $(el).val())];
  console.log(daysOfWeek1)
}); 
 <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<div class="form-check form-check-inline">
  <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Monday">
  <label for="Monday">Monday</label>
</div>
<div class="form-check form-check-inline">
  <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Tuesday">
  <label for="Tuesday">Tuesday</label>
</div>
<div class="form-check form-check-inline">
  <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Wednesday">
  <label for="Wednesday">Wednesday</label>
</div>
<div class="form-check form-check-inline">
  <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Thursday">
  <label for="Thursday">Thursday</label>
</div>
<div class="form-check form-check-inline">
  <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Friday">
  <label for="Friday">Friday</label>
</div>
<div class="form-check form-check-inline">
  <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Saturday">
  <label for="Saturday">Saturday</label>
</div>
<div class="form-check form-check-inline">
  <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Sunday">
  <label for="Sunday">Sunday</label>
</div>
<div class="form-check form-check-inline">
  <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Weekday">
  <label for="Weekday">Weekday</label>
</div>
<div class="form-check form-check-inline">
  <input class="form-check-input" type="checkbox" name="daysOfWeek" value="Weekend">
  <label for="Weekend">Weekend</label>
  <button id="submitButton">Submit</button>
</div> 

Комментарии:

1. Нет проблем @WillCoe, всегда рад помочь.

Ответ №2:

упс. Это полностью работает — я просто использовал DayOfWeek ниже и DaysOfWeek выше…

.>

Извините, что беспокою вас