#javascript #html
#javascript #HTML
Вопрос:
function Play() {
var option = ["Rock", "Paper", "Scissors"];
var randomOption = option[Math.floor(Math.random()*option.length)];
console.log(randomOption)
var UserOption = document.getElementById('UserSelect');
console.log(UserOption);
}
Play();
<div class="form-group">
<select class="form-control" id="UserSelect">
<option value="1">Rock</option>
<option value="2">Paper</option>
<option value="3">Scissors</option>
</select>
</div>
Я пытаюсь сохранить выбранную опцию в UserOption. Кажется, я не могу понять, что я делаю не так.
Комментарии:
1. Как вы вызываете
Play()
функцию? Я не вижу, чтобы эта функция вызывалась где-либо в вашем коде2. @AlwaysHelping Я вызываю его после фрагмента кода js, который я показал. Я только что добавил его.
3. Измените свои
value
атрибуты, чтобы они были фактической строкой, которую вы хотите, вместо числа, например,<option value="Rock">Rock</option>
, тогда вы можете просто использоватьdocument.getElementById("UserSelect").value
4. @Phil Я только что попробовал это, я получаю эту ошибку в консоли: Uncaught TypeError: не удается прочитать значение свойства null
5. Тогда либо ваши идентификаторы неверны, либо ваш скрипт запускается до того, как элементы существуют в документе.
Ответ №1:
Вам просто нужно получить значение выбора, вот так:
var UserOption = document.getElementById('UserSelect').value;
Затем вы можете получить имя из массива опций следующим образом:
console.log(options[UserOption-1])
Рабочий фрагмент
function Play() {
var option = ["Rock", "Paper", "Scissors"];
var randomOption = option[Math.floor(Math.random()*option.length)];
var UserOption = document.getElementById('UserSelect').value;
console.log("Player:" option[UserOption-1] " vs Computer:" randomOption );
}
<body>
<div class="form-group">
<select class="form-control" id="UserSelect">
<option value="1">Rock</option>
<option value="2">Paper</option>
<option value="3">Scissors</option>
</select>
</div>
<button class="play" onclick="Play();">Play</button>
</body>
Ответ №2:
Вы можете вызвать свою play()
функцию, используя onchange
функцию при выборе и передавая this
как argument
В вашей Play()
функции просто получите опцию selected Index
и получите ее textContent
, чтобы увидеть, что было выбрано
Кроме того, пожалуйста, убедитесь, что ваши script
теги добавлены после </body>
конца, а не в head
части страницы
function Play(e) {
var option = ["Rock", "Paper", "Scissors"];
var randomOption = option[Math.floor(Math.random() * option.length)];
console.log(randomOption)
var UserOption = e.options[e.selectedIndex].textContent;
console.log(UserOption);
}
<body>
<div class="form-group">
<select class="form-control" id="UserSelect" onchange="Play(this)">
<option selected disabled>Choose</option>
<option value="1">Rock</option>
<option value="2">Paper</option>
<option value="3">Scissors</option>
</select>
</div>
</body>
Ответ №3:
Значение параметра хранится внутри атрибута value.
var UserOption = document.getElementById('UserSelect').value;
console.log(UserOption);