Как проверить значение выбора переключателя для соответствия элементу массива - PullRequest
0 голосов
/ 21 февраля 2019

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

Например, поскольку одно из радио имеет свойство value="harry", а мой массив в моем файле generator.js имеет переменную harry в characters array.Он будет генерировать текст из файла harry.

Мой код пока

// index.html
<form name="form" action="/" method="POST">
    <div id="charType">
      <label class="btn btn-warning char harry">
        <input name="charType" type="radio" value="harry">Harry
      </label>
      <label class="btn btn-warning char ron">
        <input name="charType" type="radio" value="ron">Ron
      </label>
    </div>

    <input type="number" class="paragraph-number" name="numberOfParagraphs">
    <input type="submit" value="Generate" class="generate-button">
  </form>

  <div class="generated-text">
    <div class="placeholder-div"></div>
  </div>

и мой generator.js

const harry = require("./harryText");
const ron = require("./ronText");

const loremIpsum = new GenerateNewText();
function GenerateNewText(){
  characters = [
    harry,
    ron
  ]
}

Этот код работаетно не включает функцию выбора радио и требует от меня жесткого кода, к какой переменной в массиве обращаться.

GenerateNewText.prototype.getRandomSentence = function() {
   let randomSentence = harry[Math.floor(Math.random() * harry.length)]
   return randomSentence;
}

Очевидно, я не хочу жестко кодировать harry и хочу разрешить randomSentence генерирует текст на основе выбранного радиовхода.

Поэтому я попытался манипулировать этим кодом, среди многих других вариантов

GenerateNewText.prototype.getRandomSentence = function() {
  document.getElementsByName("charType").is("checked", function() {
      var selection = this.val();
      while(character < characters.length) {
        if(selection === characters[i]) {
          let randomSentence = [Math.floor(Math.random() * harry.length)]
          return randomSentence;
        }
      }
    })
  }

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

1 Ответ

0 голосов
/ 21 февраля 2019

Я думаю, что проблема в:

if(selection === characters[i])

'selection' is a string while 'characters[i]' нет. Вместо этого используйте объект символов примерно так:

characters ={'harry':harray, 'ron':ron}

и сравните выделение с клавишами символов

if(characters[selection]){}

Трудно отладить ваш код .. вот еще одно предложение: -use document.getElementByClass вместо document.getElementsByName

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