Почему значение моего флажка радио отличается от переданного значения? - PullRequest
0 голосов
/ 03 октября 2019

У меня есть форма, которая экспортирует пользовательские данные в XML при отправке. Этот XML затем передается через API, чтобы определить, принят ли клиент или отказан в кредите.

Вот моя функция от преобразования JS в XML:

    function js2xml(a) {
      let c = document.createElement("root");
      let t = function(v) {
        return {}.toString.call(v).split(' ')[1].slice(0, -1).toLowerCase();
      };
      let f = function(f, c, a, s) {
        //c.setAttribute("type", t(a));
        if (t(a) != "array" && t(a) != "object") {
          if (t(a) != "null") {
            c.appendChild(document.createTextNode(a));
          }
        } else {
          for (let k in a) {
            let v = a[k];
            if (k == "__type" && t(a) == "object") {
              c.setAttribute("__type", v);
            } else {
              if (t(v) == "object") {
                let ch = c.appendChild(document.createElementNS(null, s ? "item" : k));
                f(f, ch, v);
              } else if (t(v) == "array") {
                let ch = c.appendChild(document.createElementNS(null, s ? "item" : k));
                f(f, ch, v, true);
              } else {
                let va = document.createElementNS(null, s ? "item" : k);
                if (t(v) != "null") {
                  va.appendChild(document.createTextNode(v));
                }
                let ch = c.appendChild(va);
                //ch.setAttribute("type", t(v));
              }
            }
          }
        }
      };
      f(f, c, a, t(a) == "array");
      return c.innerHTML;
    }

Когда я проверяю переключатель, выводимое значение остается неизменным в экспортированном XML (4-й переключатель), даже есликаждому переключателю присвоено другое значение. Ниже мой код для вопроса.

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

<label for="AmountNeeded">How much do you need?</label><br>
      <input type="radio" name="AmountNeeded" value="100-500">$100 - $500<br>
      <input type="radio" name="AmountNeeded" value="500-1000">$500 - $1000<br>
      <input type="radio" name="AmountNeeded" value="1500-2000">$1500 - $2000<br>
      <input type="radio" name="AmountNeeded" value="2500">$2500 or more <br>

Выход отображается как независимо от того, какая кнопка отмечена. 1011 *

<AmountNeeded>2500<AmountNeeded> 

Чем это может быть вызвано?

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Вы, вероятно, зацикливаетесь и захватываете последнее значение.

var input = document.querySelectorAll('input');

function returnValue() {
    for (var i = 0; i < input.length; i++) {
        if (input[i].type === 'radio' && input[i].checked) {
            console.log(input[i].value)
        }
    }
}

for (var i = 0; i < input.length; i++) {
    input[i].addEventListener('click', function () {
        returnValue()
    });
}

Поскольку вы не предоставили никакого кода, я предполагаю, что это то, что вам нужно. Дайте мне знать, если вам понадобится дополнительная помощь.

0 голосов
/ 03 октября 2019

Измените ваши значения только на верхнее значение (т. Е. Value = "500" для $ 100-500) и запишите свой код из этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...