質問編集履歴

1

quiz.jsの追加・添付

2018/04/23 14:12

投稿

raaarta
raaarta

スコア43

test CHANGED
File without changes
test CHANGED
@@ -308,6 +308,288 @@
308
308
 
309
309
 
310
310
 
311
+ ### quiz.js です (04/23ご指摘を受け追記)
312
+
313
+ ```javascript
314
+
315
+ // ===========================================
316
+
317
+ // 47都道府県クイズ JavaScript
318
+
319
+ // ===========================================
320
+
321
+
322
+
323
+ // ============アプリ共通変数の定義============
324
+
325
+
326
+
327
+ //グローバルオブジェクト(空オブジェクト)
328
+
329
+ var MYQUIZ = {};
330
+
331
+
332
+
333
+ //都道府県データ(名称、面積(平方km))
334
+
335
+ MYQUIZ.todofuken = [
336
+
337
+ ["北海道", "83457"],["青森県", "9644"], ["岩手県", "15279"],
338
+
339
+ ["宮城県", "7286"], ["秋田県", "11636"], ["山形県", "9323"],
340
+
341
+ ["福島県", "13783"],["茨城県", "6096"], ["栃木県", "6408"],
342
+
343
+ ["群馬県", "6363"], ["埼玉県", "3797"], ["千葉県", "5157"],
344
+
345
+ ["東京都", "2188"], ["神奈川県", "2416"],["新潟県", "12584"],
346
+
347
+ ["富山県", "4248"], ["石川県", "4186"], ["福井県", "4190"],
348
+
349
+ ["山梨県", "4465"], ["長野県", "13562"], ["岐阜県", "10621"],
350
+
351
+ ["静岡県", "7780"], ["愛知県", "5165"], ["三重県", "5777"],
352
+
353
+ ["滋賀県", "4017"], ["京都府", "4613"], ["大阪府", "1898"],
354
+
355
+ ["兵庫県", "8396"], ["奈良県", "3691"], ["和歌山県","4726"],
356
+
357
+ ["鳥取県", "3507"], ["島根県", "6708"], ["岡山県", "7113"],
358
+
359
+ ["広島県", "8479"], ["山口県", "6113"], ["徳島県", "4147"],
360
+
361
+ ["香川県", "1877"], ["愛媛県", "5678"], ["高知県", "7105"],
362
+
363
+ ["福岡県", "4977"], ["佐賀県", "2440"], ["長崎県", "4105"],
364
+
365
+ ["熊本県", "7405"], ["大分県", "6340"], ["宮崎県", "7736"],
366
+
367
+ ["鹿児島県","9189"],["沖縄県", "2276"]
368
+
369
+ ];
370
+
371
+
372
+
373
+ //スコアの初期化
374
+
375
+ if(!localStorage.totalQuestion){
376
+
377
+ localStorage.totalQuestion = 0;
378
+
379
+ localStorage.correctAnswer = 0;
380
+
381
+ }
382
+
383
+
384
+
385
+ // =====▽▽この下にページごとの処理を記述します▽▽=====
386
+
387
+
388
+
389
+ // ============ページ区切り[問題]============
390
+
391
+ $(document).on("pageinit", "#questionPage", function(){
392
+
393
+
394
+
395
+ //画面表示時の処理
396
+
397
+ $("#questionPage").on("pageshow", function() {
398
+
399
+
400
+
401
+ var randNum = new Array(3);
402
+
403
+
404
+
405
+ //0から46までの重複のない整数を3つ取得
406
+
407
+ do{
408
+
409
+ for(var i = 0; i < randNum.length ; i++){
410
+
411
+ randNum[i] = Math.floor(Math.random() * 47);
412
+
413
+ }
414
+
415
+ }while(MYQUIZ.isDuplicate(randNum));
416
+
417
+
418
+
419
+ //問題を表示
420
+
421
+ $("#1").html(MYQUIZ.todofuken[randNum[0]][0]);
422
+
423
+ $("#2").html(MYQUIZ.todofuken[randNum[1]][0]);
424
+
425
+ $("#3").html(MYQUIZ.todofuken[randNum[2]][0]);
426
+
427
+
428
+
429
+ //都道府県番号をsessionStorageに保存
430
+
431
+ sessionStorage.randNum1 = randNum[0];
432
+
433
+ sessionStorage.randNum2 = randNum[1];
434
+
435
+ sessionStorage.randNum3 = randNum[2];
436
+
437
+ });
438
+
439
+
440
+
441
+ //都道府県名の選択時の処理
442
+
443
+ $("#questionList a").on("click", function() {
444
+
445
+ var selectedId = $(this).attr("id");
446
+
447
+ sessionStorage.selectedNumber = sessionStorage["randNum" + selectedId];
448
+
449
+ });
450
+
451
+
452
+
453
+ });
454
+
455
+
456
+
457
+ //配列内の値の重複を確認
458
+
459
+ MYQUIZ.isDuplicate = function(array){
460
+
461
+ array.sort();
462
+
463
+ for(var i = 0; i < (array.length - 1); i++){
464
+
465
+ if(array[i] === array[i + 1]) return true;
466
+
467
+ }
468
+
469
+ return false;
470
+
471
+ }
472
+
473
+
474
+
475
+
476
+
477
+ // ============ページ区切り[解答]============
478
+
479
+ $(document).on("pageinit", "#answerPage", function(){
480
+
481
+
482
+
483
+ //画面表示時の処理
484
+
485
+ $("#answerPage").on("pageshow", function() {
486
+
487
+ var selectedNum = sessionStorage.selectedNumber;
488
+
489
+ var randNum = new Array(3);
490
+
491
+ randNum[0] = sessionStorage.randNum1;
492
+
493
+ randNum[1] = sessionStorage.randNum2;
494
+
495
+ randNum[2] = sessionStorage.randNum3;
496
+
497
+
498
+
499
+ var questionData = new Array(3);
500
+
501
+ for(var i = 0; i < questionData.length; i++){
502
+
503
+ questionData[i] = new Array(2);
504
+
505
+ questionData[i][0] = MYQUIZ.todofuken[randNum[i]][0];
506
+
507
+ questionData[i][1] = MYQUIZ.todofuken[randNum[i]][1];
508
+
509
+ }
510
+
511
+ questionData.sort(MYQUIZ.arraySort);
512
+
513
+
514
+
515
+ //正誤の判定と表示
516
+
517
+ if(questionData[0][0] === MYQUIZ.todofuken[selectedNum][0]){
518
+
519
+ $("#judge").html("正解").css("color","green");
520
+
521
+ localStorage.correctAnswer++;
522
+
523
+ }else{
524
+
525
+ $("#judge").html("ハズレ").css("color","red");
526
+
527
+ }
528
+
529
+
530
+
531
+ //ランキング表示
532
+
533
+ for(var i = 0; i < questionData.length; i++){
534
+
535
+ $("#todofuken" + (i+1) ).html(questionData[i][0]);
536
+
537
+ $("#areaSize" + (i+1) ).html(questionData[i][1] + "平方Km");
538
+
539
+ }
540
+
541
+
542
+
543
+ //総解答数の更新
544
+
545
+ localStorage.totalQuestion++;
546
+
547
+ });
548
+
549
+ });
550
+
551
+
552
+
553
+ //2次元配列ソート(並べ替え)用の関数
554
+
555
+ MYQUIZ.arraySort = function(a, b){
556
+
557
+ return b[1] - a[1];
558
+
559
+ }
560
+
561
+
562
+
563
+ // ============ページ区切り[正解率]============
564
+
565
+ $(document).on("pageinit", "#scorePage", function(){
566
+
567
+
568
+
569
+ //画面表示時の処理
570
+
571
+ $("#scorePage").on("pageshow", function() {
572
+
573
+ $("#totalQuestion").html(localStorage.totalQuestion);
574
+
575
+ $("#correctAnswer").html(localStorage.correctAnswer);
576
+
577
+ var ratio = Math.floor((localStorage.correctAnswer / localStorage.totalQuestion) * 100);
578
+
579
+ $("#correctRatio").html(ratio + "%");
580
+
581
+ });
582
+
583
+
584
+
585
+ });
586
+
587
+ ```
588
+
589
+
590
+
591
+
592
+
311
593
  ### 試したこと
312
594
 
313
595
  旧ファイル名"quiz.index"のままになっている個所があるかと思い、プログラム内を検索しましたが、ありませんでした。