Как я могу сохранить выбранный переключатель в массиве?

Я провожу онлайн-экзамен, в котором вопросы поступают из базы данных через php и отображаются через ajax. Я хочу получить выбранный переключатель и сохранить его в массиве, которого не происходит, потому что я не получаю значение. Все остальное работает нормально, только я не могу нажать значение радио в массиве. я могу предоставить код php, если вам нужно просмотреть проблему пожалуйста помоги

HTML:

<button type = "button" class = "btn btn-info btn-md" id = "mark" onclick = "loadNextQues(1)">Mark for Review & Next</button>
<button type = "button" class = "btn btn-info btn-md">Clear Response</button>
<button type = "submit" class = "btn btn-info btn-md" id = "save" style = "position:absolute;right:20px;bottom:35px" onclick = "loadNextQues(0)">Save and Next</button>
<form action = "check.php">
  <button type='submit' class = "btn btn-info btn-md" id = "water" style = "visibility:hidden;position:absolute;right:20px;bottom:35px">submit</button>

Javascript:

 function loadNextQues(flag) {
  quesno++;
  if (flag == 1) {
    //add css to the button for review
  } else {
    //add css for the button as answered
  }
  url = "http://localhost/assignments/load-questions.php?qno = " + quesno;
  $.get(url, function(data, status) {
    response = JSON.parse(data);
    console.info(response);
    var quest = "<p>" + response.qno + " " + response.question + "</p>";
    quest += "<form>";
    quest +=
      '<input type = "radio" name = "op" value=\'' +
      response.opA +
      "'>A." +
      response.opA +
      "<br>";
    quest +=
      '<input type = "radio" name = "op" value=\'' +
      response.opB +
      "'>B." +
      response.opB +
      "<br>";
    quest +=
      '<input type = "radio" name = "op" value=\'' +
      response.opC +
      "'>C." +
      response.opC +
      "<br>";
    quest +=
      '<input type = "radio" name = "op" value=\'' +
      response.opD +
      "'>D." +
      response.opD +
      "<br>";
    quest += "</form>";
    document.getElementById("questBox").innerHTML = quest;
  });

  if (quesno == 15) {
    document.getElementById("mark").style.visibility = "hidden";
    document.getElementById("save").style.visibility = "hidden";
    document.getElementById("water").style.visibility = "visible";
  }
  var myArr = [];
  var Selected = document.querySelectorAll('[name = "op"]:checked');
  if (Selected != null) {
    arr.push(Selected.value);
  }
  console.info(arr);
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
123
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать синтаксис ES6 и метод массива .map(). Что-то типа...

var arr = Selected.map(dom => dom.value);

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

Kaunish Roy 11.04.2019 23:42

DOM означает объектную модель документа, в этом контексте он имеет в виду элементы радиоввода, к которым вы пытаетесь получить доступ. Используемый синтаксис является сокращением для чего-то вроде этого: var arr = Selected.map(function(radio) { return radio.value; }) map выполняет работу по зацикливанию и помещению всех ваших значений в одну переменную.

Valerie 12.04.2019 00:20

Большое спасибо.

Kaunish Roy 12.04.2019 01:43
Ответ принят как подходящий

Вам нужно перебирать элементы, чтобы получить их значения, также arr не определен.

Отредактируйте, чтобы получить желаемый эффект...

var arr = new Array();
function loadNextQues(flag) {
  var Selected = document.querySelectorAll('[name = "op"]:checked');
  if (Selected != null) {
     Selected.forEach(function(radio) {
        arr.push(radio.value);
     });
  }
  console.info(arr);

  quesno++;
  if (flag == 1) {
    //add css to the button for review
  } else {
    //add css for the button as answered
  }
  url = "http://localhost/assignments/load-questions.php?qno = " + quesno;
  $.get(url, function(data, status) {
    response = JSON.parse(data);
    console.info(response);
    var quest = "<p>" + response.qno + " " + response.question + "</p>";
    quest += "<form>";
    quest +=
      '<input type = "radio" name = "op" value=\'' +
      response.opA +
      "'>A." +
      response.opA +
      "<br>";
    quest +=
      '<input type = "radio" name = "op" value=\'' +
      response.opB +
      "'>B." +
      response.opB +
      "<br>";
    quest +=
      '<input type = "radio" name = "op" value=\'' +
      response.opC +
      "'>C." +
      response.opC +
      "<br>";
    quest +=
      '<input type = "radio" name = "op" value=\'' +
      response.opD +
      "'>D." +
      response.opD +
      "<br>";
    quest += "</form>";
    document.getElementById("questBox").innerHTML = quest;
  });

  if (quesno == 15) {
    document.getElementById("mark").style.visibility = "hidden";
    document.getElementById("save").style.visibility = "hidden";
    document.getElementById("water").style.visibility = "visible";
  }
  var myArr = [];

Вы правы, Спасибо. Но когда я нажимаю «Сохранить и далее», в консоли отображается только последний выбранный параметр радио в массиве, а не выбранные параметры радио в предыдущих вопросах до этого. Пожалуйста, помогите, сэр/мэм.

Kaunish Roy 12.04.2019 00:07

В этом случае вам нужно переместить var arr = new Array() перед loadNextQues объявлением функции и переместить код, который я вам дал, в начало функции. Я обновлю свой ответ, чтобы показать его

Valerie 12.04.2019 00:11

Большое спасибо, вы очень помогли. Я сделал то, что вы сказали мне, и это работает отлично. Это работает :)

Kaunish Roy 12.04.2019 00:50

Не могли бы вы помочь мне еще в одном вопросе, в последнем вопросе нет кнопки «Сохранить» и «Далее», появляется кнопка «Отправить», все, что мне нужно сделать, это нажать кнопку «Отправить», массив с предыдущими параметрами радио должен включать параметр радио последнего вопроса и перейти к другому файлу с именем check.php. Можете ли вы сказать мне, как это сделать? Большое спасибо за предыдущий ответ.

Kaunish Roy 12.04.2019 00:58

Другие вопросы по теме