Цикл по массиву с помощью кнопки
Хорошо, по сути, я хочу создать короткую викторину, в которой есть следующая и предыдущая кнопки. Я хочу пройтись по двум массивам, вопросам и вариантам выбора, и в конце получить оценку. Я прочитал главы о DOM и событиях, и он, очевидно, не щелкает.
На самом деле мне нужно немного кода, который показывает конкретный пример того, как манипулировать DOM. Пока у меня есть только массивы и функция, объявляющая, что x фактически получает мой элемент по id. ха-ха.
Извините, у меня нет больше кода, чтобы дать. Я попытался прикрепить идентификатор к абзацу, а затем получить его по его идентификатору и документу. Записать массив, но это заменяет кнопку. Если вы запустите код ниже, вы увидите, что я говорю.
<!DOCTYPE html>
<html>
<head>
<title>Bom</title>
</head>
<body>
<input type="button" value="Iterate" id="myButton" onclick="iter_onclick()">
<p id="qArray">Some Text</p>
<script>
var qArray = ["Who is my dog?", "who is the prez?", "Who is my girlfriend?", "Who am I?"];
var cArray = [["Bill","Billy", "Arnold", "Tyler"],["Oz"," Buffon","Tupac","Amy"],["Tony Blair","Brack Osama","Barack Obama","Little Arlo"],["Emma Stone","Tony the Tiger","","The Smurf Girl"]];
function iter_onclick () {
var x = document.getElementById("qArray");
document.write("Hello World");
}
</script>
</body>
</html>`
Как я уже сказал, это моя первая попытка по-настоящему манипулировать DOM, и я знаю, что хочу сделать. Я просто не знаю, как это сделать. Я понимаю весь синтаксис и события и объекты и тому подобное. Но я не совсем уверен, как это применить. Также нет Jquery. Я хочу знать, как создавать приложения с помощью Javascript, а затем работать в Jquery. Спасибо людям.
2 ответа
Это перебирает ваши вопросы, надеюсь, это поможет вам продолжить.
var qArray = ["Who is my dog?",
"who is the prez?",
"Who is my girlfriend?",
"Who am I?"];
var cArray = [
["Bill", "Billy", "Arnold", "Tyler"],
["Oz", " Buffon", "Tupac", "Amy"],
["Tony Blair", "Brack Osama", "Barack Obama", "Little Arlo"],
["Emma Stone", "Tony the Tiger", "Amy Dahlquist", "The Smurf Girl"]
];
var index = 0;
function iter_onclick() {
//if this is the last question hide and displays quiz ends
if (index >= qArray.length) {
document.getElementById('qArray').innerHTML = '<div>Quiz End, Thank you</div>'
document.getElementById('myButton').style.visibility = 'hidden ';
return false;
}
var html = ' <div> ' + qArray[index] + ' </div> <div>';
for (var i = 0; i < cArray[index].length; i++) {
html += '<label><input type="radio" name="ans" value="'
+ cArray[index][i] + '"/ > ' + cArray[index][i] + ' </label>';
}
html += '</div > ';
document.getElementById('qArray').innerHTML = html;
index++;
}
Вот очень простой пример, с которым вы можете работать. Это изменяет существующие элементы DOM. Вы не можете использовать document.write()
для документа, который уже загружен, или он очистит все, что у вас есть, и начнет все сначала, и это не самый эффективный способ поместить контент в DOM.
В этом примере есть несколько полей на странице, он загружает вопрос и затем проверяет ответ при нажатии следующей кнопки.
HTML:
<div id="question"></div>
<input id="answer" type="text"><br><br>
<button id="next">Next</button> <br><br><br>
Number Correct So Far: <span id="numCorrect">0</span>
Javascript (в теге script):
var qArray = ["Who is my dog?", "who is the prez?", "Who is my girlfriend?", "Who am I?"];
var cArray = [["Bill","Billy", "Arnold", "Tyler"],["Oz"," Buffon","Tupac","Amy"],["Tony Blair","Brack Osama","Barack Obama","Little Arlo"],["Emma Stone","Tony the Tiger","Amy Dahlquist","The Smurf Girl"]];
var questionNum = -1;
var numCorrect = 0;
function loadQuestion() {
++questionNum;
if (questionNum >= qArray.length) {
alert("all questions are done");
} else {
document.getElementById("question").innerHTML = qArray[questionNum];
document.getElementById("answer").value = "";
}
}
loadQuestion();
function checkAnswer() {
var answer = document.getElementById("answer").value.toLowerCase();
var allowedAnswers = cArray[questionNum];
for (var i = 0; i < allowedAnswers.length; i++) {
if (allowedAnswers[i].toLowerCase() == answer) {
return true;
}
}
return false;
}
document.getElementById("next").addEventListener("click", function(e) {
if (checkAnswer()) {
++numCorrect;
document.getElementById("numCorrect").innerHTML = numCorrect;
loadQuestion();
} else {
alert("Answer is not correct");
}
});
Рабочая демонстрация: http://jsfiddle.net/jfriend00/gX2Rm/