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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Q&A

解決済

2回答

1777閲覧

JavaScript 診断テストをつくりたい。

tiki-

総合スコア18

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

0グッド

0クリップ

投稿2019/06/17 11:20

編集2019/06/17 11:22

前提・実現したいこと

Javascriptを使って性格診断テストを作りたい。

まだ完成ではなく
『複数クリックしても最後のものだけ色を付けるようにする。』
『入力したものをデータベースに取り込む』
という所のイメージがついていません。

特にさわったばかりで、JavaScriptで選択したデータはデータベースにそもそも取り込めるのかもわかりません。どういった関数でプログラムを作っていけるんでしょうか?
また、最後のものだけに色を付けるやり方も今のクラスを付与する形のものをいじくったらできますでしょうか?

そもそも診断テストならもっと簡単な形がいいんでしょうか(^-^;

該当のソースコード

JavaScript

1'use strict'; 2 3{ 4 const question = document.getElementById('question'); //constで値を変えないものとして代入 5 const btn = document.getElementById('btn'); //getElementById指定したIDに会ったドキュメントを取得 6 const choices = document.getElementById('choices'); // 7 8 const quizSet = [ 9 {q: 'What is A?', c: ['A0', 'A1', 'A2']}, 10 {q: 'What is B?', c: ['B0', 'B1', 'B2']}, 11 {q: 'What is D?', c: ['C0', 'C1', 'C2']}, 12 {q: 'What is E?', c: ['C0', 'C1', 'C2']}, 13 {q: 'What is F?', c: ['C0', 'C1', 'C2']}, 14 {q: 'What is G?', c: ['C0', 'C1', 'C2']}, 15 {q: 'What is H?', c: ['C0', 'C1', 'C2']}, 16 {q: 'What is I?', c: ['C0', 'C1', 'C2']}, 17 {q: 'What is J?', c: ['C0', 'C1', 'C2']}, 18 ]; 19 let currentNum = 0; 20 let isAnswered; 21 22 function shuffle(arr) { 23 return arr; 24 } 25 26 function checkAnswer(li) { 27 if(isAnswered){ 28 return; 29 } 30 li.classList.add('correct'); 31 btn.classList.remove('disabled'); 32 } 33 function setQuiz() { 34 isAnswered = false; 35 36 question.textContent = quizSet[currentNum].q; 37 38 while (choices.firstChild) { 39 choices.removeChild(choices.firstChild); 40 } 41 42 const shuffledChoices = shuffle([...quizSet[currentNum].c]); 43 shuffledChoices.forEach(choice => { //アロー関数? 44 const li = document.createElement('li'); 45 li.textContent = choice; 46 li.addEventListener('click', () => { 47 checkAnswer(li); 48 }); 49 choices.appendChild(li); 50 }); 51 } 52 53 setQuiz(); 54 btn.addEventListener('click', () => { 55 currentNum++; 56 setQuiz(); 57 }); 58}

HTML

1 <div class ="container2"> 2 <p id="question"></p> 3 <ul id="choices"></ul> 4 <div id="btn" class="disabled">Next</div> 5 </div>

CSS

1/* 診断テスト*/ 2.container2 { 3 width: 400px; 4 margin: 8px auto; 5 background: #fff; 6 border-radius: 4px; 7 padding: 16px; 8 position: relative; 9} 10 11#question{ 12 margin-bottom: 16px; 13 font-weight: bold; 14} 15 16#choices { 17 list-style: none; 18 padding: 0; 19 margin-bottom: 16px; 20} 21 22#choices li{ 23 border: 1px solid #ccc; 24 border-radius: 4px; 25 padding: 10px; 26 margin-bottom: 10px; 27 cursor: pointer; 28} 29 #choices li:hover { 30 background: #f8f8f8; 31} 32 33 #choices li.correct{ 34 background: #d4edda; 35 border-color: #c3e6cd; 36 color: #155724; 37 font-weight: bold; 38 } 39 40#btn{ 41 background: #3498db; 42 padding: 8px; 43 border-radius: 4px; 44 cursor: pointer; 45 text-align: center; 46 color: #fff; 47 box-shadow: 0 4px 0 #2880b9; 48} 49#btn.disabled{ 50 background: #ccc; 51 box-shadow: 0 4px 0 #bbb; 52 opacity: 0.7; 53}

試したこと

サンプルやテキストを参考に少しいじくって形は完成ではないですが、一応作れました。

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

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

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

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

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

papinianus

2019/06/18 09:11

私に回答依頼なさったのはGoogleフォームでやりたいということですか?
m.ts10806

2019/06/20 00:18

>一応作れました。 自身で具体的に回答にして解決済みにしておいてください。
guest

回答2

0

どういった関数でプログラムを作っていけるんでしょうか?

まずどういった関数(メソッド)があるのか勉強しましょう。
コードを見た限りではドットインストールの「JavaScriptで三択クイズを作ろう」の
コードをコピペして自身で少し変更した程度でメソッドなどをよく理解できていないようなので
もっと勉強したほうが良いです。
(例: shuffleという関数で配列をそのまま返す無駄な処理があるなど)
https://dotinstall.com/lessons/quiz_js_v2

また、最後のものだけに色を付けるやり方も今のクラスを付与する形のものをいじくったらできますでしょうか?

当たり前ですが勉強すればできます
勉強しなければできないです。

そもそも診断テストならもっと簡単な形がいいんでしょうか(^-^;

それ以前に質問に記載されているコードは
複数選択ができ、選択したら解除ができないので
診断テストとして見たら論外なので修正が必要です。

投稿2019/06/17 12:00

yasutomi

総合スコア2937

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

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

0

ベストアンサー

質問の要点がまったくわからないのですが、疑問文になっている箇所だけ

どういった関数でプログラムを作っていけるんでしょうか?

答えはありません。プログラマが「この方法がいい」と思って、最終的に実現できているのなら、それが(その人にとっての)正解です。

また、最後のものだけに色を付けるやり方も今のクラスを付与する形のものをいじくったらできますでしょうか?

できる、できないのレベルであれば、「いじくったら(そういう機能にしたら)できる」ということになります。

そもそも診断テストならもっと簡単な形がいいんでしょうか(^-^;

それはプログラマ本人(および共同開発者等の利害関係者)が考えることであって、第三者には判断できません。

投稿2019/06/17 11:35

gentaro

総合スコア8949

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問