#javascript #jquery
#javascript #jquery
Вопрос:
Я пытаюсь создать простую обучающую игру для веб-сайта, чтобы научить детей наречиям.
В нем просто есть предложение с пустым словом и 3 кнопки, содержащие три возможных слова. I Одно из них является наречием, а два других — нет. Я создал несколько массивов, содержащих варианты предложений и слов, однако наречие всегда появляется в одной и той же кнопке, и я хотел бы его изменить.
<html lang="en">
<head>
<title>Adverb Kings</title>
</head>
<body>
<h1>Adverb Kings</h1>
<div id="sentence"><p>Place an _____ here</p>
</div>
<div>
<button type="button" class="btn btn-primary loser"><span id="other1"></span></button>
<button type="button" class="btn btn-primary" id="winner"><span id="adverbs"></span></button>
<button type="button" class="btn btn-primary loser"><span id="other2"></span></button>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C OGpamoFVy38MVBnE IbbVYUew OrCXaRkfj" crossorigin="anonymous"></script>
<script>
var sentence;
sentence = ['The people _______ went crazy about the new game options', 'The man _______ slipped his hands around his desk handle', 'He _______ typed a new password for his school account'];
var el = document.getElementById('sentence');
el.textContent = sentence[Math.floor(Math.random() * sentence.length)];
var adverbs;
adverbs = ['slowly', 'quickly', 'insanely'];
var el = document.getElementById('adverbs');
el.textContent = adverbs[Math.floor(Math.random() * adverbs.length)];
var other1;
other1 = ['burger', 'insane', 'ugly'];
var el = document.getElementById('other1');
el.textContent = other1[Math.floor(Math.random() * other1.length)];
var other2;
other2 = ['adverb', 'fist', 'gun'];
var el = document.getElementById('other2');
el.textContent = other2[Math.floor(Math.random() * other2.length)];
$("#winner").click(function() {
alert("congratulations! You are a genius");
});
$(".loser").click(function() {
alert("Commiserations! You are a fool");
});
</script>
</body>
</html>
Ответ №1:
Это потому, что положение ваших кнопок всегда находится в одном и том же порядке.
Я немного отредактировал ваш скрипт. Проверьте это.
<html lang="en">
<head>
<title>Adverb Kings</title>
</head>
<body>
<h1>Adverb Kings</h1>
<div id="sentence"></div>
<div>
<button type="button" class="btn btn-primary"></button>
<button type="button" class="btn btn-primary"></button>
<button type="button" class="btn btn-primary"></button>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C OGpamoFVy38MVBnE IbbVYUew OrCXaRkfj" crossorigin="anonymous"></script>
<script>
var sentence;
sentence = ['The people _______ went crazy about the new game options', 'The man _______ slipped his hands around his desk handle', 'He _______ typed a new password for his school account'];
var el = document.getElementById('sentence');
el.textContent = sentence[Math.floor(Math.random() * sentence.length)];
var orders = [0, 1, 2];
shuffle(orders);
var buttons = document.getElementsByTagName("button");
buttons[orders[0]].setAttribute("id", "winner");
buttons[orders[1]].classList.add("loser");
buttons[orders[2]].classList.add("loser");
var adverbs = ['slowly', 'quickly', 'insanely'];
buttons[orders[0]].textContent = adverbs[Math.floor(Math.random() * adverbs.length)];
var other1 = ['burger', 'insane', 'ugly'];
buttons[orders[1]].textContent = other1[Math.floor(Math.random() * other1.length)];
var other2 = ['adverb', 'fist', 'gun'];
buttons[orders[2]].textContent = other2[Math.floor(Math.random() * other2.length)];
$("#winner").click(function() {
alert("congratulations! You are a genius");
});
$(".loser").click(function() {
alert("Commiserations! You are a fool");
});
function shuffle(array) {
array.sort(() => Math.random() - 0.5);
}
</script>
</body>
</html>
Комментарии:
1. Привет. Вы не возражаете, если я задам вопрос о вашем коде, чтобы лучше понять. Можете ли вы объяснить, как ‘shuffle (orders);’ amp; ‘функция shuffle (array) { array.sort (() => Math.random () — 0.5); }’ работают вместе для достижения конечного результата? Я понимаю часть ‘Math.random () — 0.5’