質問するログイン新規登録

質問編集履歴

3

変更箇所の明確化

2020/04/01 09:33

投稿

dadada12
dadada12

スコア4

title CHANGED
File without changes
body CHANGED
@@ -4,6 +4,11 @@
4
4
  Jqueryの配列内に画像を表示させたいのですが、
5
5
  どのように対処すればよいのかが分かりません。
6
6
 
7
+
8
+ 下記、コード内の”正解は?”の箇所を画像に入れ替えたいと考えております。
9
+ { question :'正解は?',
10
+ answer : ['A', 'B', 'C', 'D']}
11
+
7
12
  調べたのですが中々これっていうのがヒットしなく、
8
13
  ご教授の程お願い致します。
9
14
 

2

全コード

2020/04/01 09:33

投稿

dadada12
dadada12

スコア4

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,43 @@
8
8
  ご教授の程お願い致します。
9
9
 
10
10
 
11
+ ```ここに言語を入力
12
+ <html lang="ja">
13
+ <head>
14
+ <meta charset="utf-8">
15
+ <title>TEST</title>
16
+ <link rel="stylesheet" type="text/css" href="css/index.css">
17
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
18
+ </head>
19
+ <body>
20
+
21
+ <div class="quiz_area">
22
+ <div class="quiz_set">
23
+ 第<span class="quiz_no">0</span>問
24
+ <div class="quiz_question"></div>
25
+ <div class="quiz_ans_area">
26
+ <ul></ul>
27
+ </div>
28
+ <div class="quiz_area_bg"></div>
29
+ <div class="quiz_area_icon"></div>
30
+ </div>
31
+ <div class="quiz_result"></div>
32
+ </div>
33
+
34
+ <script>
35
+ $(function(){
36
+
37
+
38
+ var quizArea = $('.quiz_area'); //クイズを管理するDOMを指定
39
+ var quiz_html = quizArea.html(); //もう一度 を押した時に元に戻すため初期HTMLを変数で保管
40
+ var quiz_cnt = 0; //現在の問題数を管理
41
+ var quiz_fin_cnt = 5; //何問で終了か設定(クイズ数以下であること)
42
+ var quiz_success_cnt = 0; //問題の正解数
43
+
44
+ //クイズの配列を設定
45
+ //answerの選択肢の数はいくつでもOK ただし先頭を正解とすること(出題時に選択肢はシャッフルされる)
46
+
47
+
11
48
  var aryQuiz = [];
12
49
  aryQuiz.push(
13
50
  {
@@ -30,4 +67,105 @@
30
67
  question :'正解は?',
31
68
  answer : ['A', 'B', 'C', 'D']
32
69
  }
33
- );
70
+ );
71
+
72
+ quizReset();
73
+
74
+ //回答を選択した後の処理
75
+ quizArea.on('click', '.quiz_ans_area ul li', function(){
76
+ //画面を暗くするボックスを表示(上から重ねて、結果表示中は選択肢のクリックやタップを封じる
77
+ quizArea.find('.quiz_area_bg').show();
78
+ //選択した回答に色を付ける
79
+ $(this).addClass('selected');
80
+ if($(this).data('true')){
81
+ //正解の処理 〇を表示
82
+ quizArea.find('.quiz_area_icon').addClass('true');
83
+ //正解数をカウント
84
+ quiz_success_cnt++;
85
+ }else{
86
+ //不正解の処理
87
+ quizArea.find('.quiz_area_icon').addClass('false');
88
+ }
89
+ setTimeout(function(){
90
+ //表示を元に戻す
91
+ quizArea.find('.quiz_ans_area ul li').removeClass('selected');
92
+ quizArea.find('.quiz_area_icon').removeClass('true false');
93
+ quizArea.find('.quiz_area_bg').hide();
94
+ //問題のカウントを進める
95
+ quiz_cnt++;
96
+ if(quiz_fin_cnt > quiz_cnt){
97
+ //次の問題を設定する
98
+ quizShow();
99
+ }else{
100
+ //結果表示画面を表示
101
+ quizResult();
102
+ }
103
+ }, 1500);
104
+ });
105
+
106
+ //もう一度挑戦するを押した時の処理
107
+ quizArea.on('click', '.quiz_restart', function(){
108
+ quizReset();
109
+ });
110
+
111
+ //リセットを行う関数
112
+ function quizReset(){
113
+ quizArea.html(quiz_html); //表示を元に戻す
114
+ quiz_cnt = 0;
115
+ quiz_success_cnt = 0;
116
+ aryQuiz = arrShuffle(aryQuiz); //毎回出題の順番をシャッフルしたい場合はここのコメントを消してね
117
+ quizShow();
118
+ }
119
+
120
+ //問題を表示する関数
121
+ function quizShow(){
122
+ //何問目かを表示
123
+ quizArea.find('.quiz_no').text((quiz_cnt + 1));
124
+ //問題文を表示
125
+ quizArea.find('.quiz_question').text(aryQuiz[quiz_cnt]['question']);
126
+ //正解の回答を取得する
127
+ var success = aryQuiz[quiz_cnt]['answer'][0];
128
+ //現在の選択肢表示を削除する
129
+ quizArea.find('.quiz_ans_area ul').empty();
130
+ //問題文の選択肢をシャッフルさせる(自作関数) .concat()は参照渡し対策
131
+ var aryHoge = arrShuffle(aryQuiz[quiz_cnt]['answer'].concat());
132
+ //問題文の配列を繰り返し表示する
133
+ $.each(aryHoge, function(key, value){
134
+ var fuga = '<li>' + value + '</li>';
135
+ //正解の場合はdata属性を付与する
136
+ if(success === value){
137
+ fuga = '<li data-true="1">' + value + '</li>';
138
+ }
139
+ quizArea.find('.quiz_ans_area ul').append(fuga);
140
+ });
141
+ }
142
+
143
+ //結果を表示する関数
144
+ function quizResult(){
145
+ quizArea.find('.quiz_set').hide();
146
+ var text = quiz_fin_cnt + '問中' + quiz_success_cnt + '問正解!';
147
+ if(quiz_fin_cnt === quiz_success_cnt){
148
+ text += '<br>全問正解!';
149
+ }
150
+ text += '<br><input type="button" value="もう一度挑戦する" class="quiz_restart p-10">';
151
+ quizArea.find('.quiz_result').html(text);
152
+ quizArea.find('.quiz_result').show();
153
+ }
154
+
155
+ //配列をシャッフルする関数
156
+ function arrShuffle(arr){
157
+ for(i = arr.length - 1; i > 0; i--){
158
+ var j = Math.floor(Math.random() * (i + 1));
159
+ var tmp = arr[i];
160
+ arr[i] = arr[j];
161
+ arr[j] = tmp;
162
+ }
163
+ return arr;
164
+ }
165
+ //ここにソースコードを書き込む
166
+
167
+ });
168
+ </script>
169
+ </body>
170
+ </html>
171
+ ```

1

文章編集

2020/04/01 08:24

投稿

dadada12
dadada12

スコア4

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  はじめまして。
2
- web初心者なのすがお力添えいただけると幸いです。
2
+ web初心者で行き詰ってりまして、お力添えいただけると幸いです。
3
3
 
4
4
  Jqueryの配列内に画像を表示させたいのですが、
5
5
  どのように対処すればよいのかが分かりません。