幻魔ナイトブログ

主に絵、音楽、プログラミングなどについて書きます。

bootstrapを使って漢字の読み方のクイズサイトを作ってみた(その1)

概要

bootstrapの勉強がてら漢字の読み仮名当てクイズを作ってみた。 - 読み仮名が表示される - トグルかから読み方を表示する - 次の問題ボタンで次の問題が表示される。

実際作ったサイトは以下。 https://mahimahironron.hateblo.jp/Kanji_quiz

やったことの解説

実際に作ったサイトは以下。bootstrapの練習として始めたのにほとんどハマったのはjquery周りだったので、今後の努力が必要そうな気がする。

bootstrap

正直公式のWebページを見た方が早い。利用したのは以下。

jquery

クラスのAND条件で要素を指定する
        <div class="question_item current">
          <span class="question">
            薔薇
          </span>
          <span class="answer">
            ばら
          </span>
          <p class="description">
            実は実は「薔」だけで「ばら」と読む。そのほかにも「みずたで」と読む。
          </p>
        </div>
var correct_ans = $('.question_item.current').find(".answer").text();

上のように「.クラス1.クラス2」とすることでAND条件指定することができます。

inputの入力値をとってくる。

inputタイプの入力欄に入力された値をとってくるにはtest()メソッドではなくval()メソッドを使用する

<input type="text" id="user_ans" placeholder="回答記入欄">
var user_ans = $('#user_ans').val();

上のように「要素.val()」で入力された値をとってくることができます。

セレクタのAND指定、OR指定
  • OR指定 カンマを使います。
$(要素, 要素)
素数を取得する

length()メソッドを使用すればとってくることができる。

var next_num = Math.floor( Math.random() * questions.length );
jqueryで配列っぽく扱う方法

eachメソッドがあるので、findなどでとってきたら[n]で配列っぽく扱えると思ってたができなかったので注意。 jqueryでfindなどでとった複数要素を扱うためには以下のようにする

var questions = $(".questions").find(".question_item");
$(".question_item.current").removeClass("current");

上のように書くとquestionsクラスは以下のquestion_itemクラスを全てfindで取得して、n番目の要素に対して処理を行うことができます。今回はクラスを除去する処理を行なっています。

参考にしたサイトなど

お問合わせはこちら