質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

883閲覧

jsでクイズを作ったがランダム出題にする方法がわからない

yusura

総合スコア1

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2022/05/31 03:27

下記のコードをランダムで重複なしで問題数を指定して出題したいのですが、やり方がわからないので教えて欲しいです。

htmlコード

<!doctype html> <html class="no-js" lang="ja"> <head> <meta charset="utf-8"> <title>エヴァンゲリオンクイズ</title> <h1>エヴァンゲリオンクイズ</h1> <h2>その他</h2><h3>初級編</h3> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="./css/style.css"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <meta name="theme-color" content="#fafafa"> </head> <body> <div class="container">
<div class="jumbotron mt-5"> <div class="d-flex justify-content-center"> <div id="js-question" class="alert alert-primary" role="alert"> A simple primary alert—check it out! </div> </div> <div id="js-items" class="d-flex justify-content-center"> <div class="m-2"> <button type="button" id="js-btn-1" class="btn btn-primary">Primary</button> </div> <div class="m-2"> <button type="button" id="js-btn-2" class="btn btn-primary">Primary</button> </div> <div class="m-2"> <button type="button" id="js-btn-3" class="btn btn-primary">Primary</button> </div> </div> </div>
</div> <script src="app.js"></script> </body> </html> jsコード const quiz = [ { question: 'マリの正確な名前は次のうちどれ', answers: [ '真理波・マリ・イラストリアス', '真紀波・マリ・イラストリアス', '真希波・マリ・イラストリアス' ], correct: '真希波・マリ・イラストリアス' }, { question: 'NERV本部がある街の名前は次のうちどれ?', answers: [ '第3新東京市', '第1新東京市', '第2新東京市' ], correct: '第3新東京市' }, { question: '綾波レイの乗っているEVA零号機は零号機と零号機(改)があるが、零号機(改)は何色か?', answers: [ 'オレンジ', '山吹色', '青', ], correct: '青' }, { question: '使徒の原動力となっている機関は何機関?', answers: [ 'S2機関', 'S1機関', 'SP機関', ], correct: 'S2機関' }, ];

const $window = window;
const $doc = document;
const $question = $doc.getElementById('js-question');
const $buttons = $doc.querySelectorAll('.btn');

const quizLen = quiz.length;
let quizCount = 0;
let score = 0;

const init = () => {
$question.textContent = quiz[quizCount].question;

const buttonLen = $buttons.length; let btnIndex = 0; while(btnIndex < buttonLen){ $buttons[btnIndex].textContent = quiz[quizCount].answers[btnIndex]; btnIndex++; }

};

const goToNext = () => {
quizCount++;
if(quizCount < quizLen){
init(quizCount);
} else {
$window.alert('クイズ終了!');
showEnd();
}
};

const judge = (elm) => {
if(elm.textContent === quiz[quizCount].correct){
$window.alert('正解!');
score++;
} else {
$window.alert('不正解!');
}
goToNext();
};

const showEnd = () => {
$question.textContent = '終了!あなたのスコアは' + score + '/' + quizLen + 'です';

const $items = $doc.getElementById('js-items'); $items.style.visibility = 'hidden';

};

init();

let answersIndex = 0;
let answersLen = quiz[quizCount].answers.length;

while(answersIndex < answersLen){
$buttons[answersIndex].addEventListener('click', (e) => {
judge(e.target);
});
answersIndex++;
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

const quiz = [...]; の次の行あたりで、この配列をシャッフルすればよいでしょう。「javascript 配列 シャッフル」でウェブ検索すると例が見つかると思います。

投稿2022/05/31 03:38

int32_t

総合スコア20884

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yusura

2022/05/31 10:25

回答ありがとうございます。自分でもあらかじめ調べたのですがいまいち理解できなくて 質問した次第だったのですが
int32_t

2022/05/31 21:47

何を調べて、何が理解できませんでしたか? 質問者さんが何が理解できないか具体的に知っておかないと、ここで私がまた理解できない解説を書く可能性が高いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問