国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS實現簡單的選擇題測評系統代碼思路詳解(demo)

2019-11-19 15:34:24
字體:
來源:轉載
供稿:網友

包含內容:JS封裝表單,JS校驗表單

說是測評系統,感覺只能算是一個小小的Demo,很水,,沒有數據庫庫,,僅使用JS做簡單的選擇題測評系統

--------------------------------------------------------------------------------

一、設計思路

表單封裝:

【1】由于采用JS封裝提交所以,不需要form標簽

【2】放置多個input標簽,作為輸入項

【3】編寫JS獲取輸入項,并通過get方式提交到另一個頁面

校驗表單(顯示結果)

【1】獲取get傳入的參數

【2】通過JS解析

【3】顯示到相應位置

--------------------------------------------------------------------------------

二、參考源碼如下

request.html

<html><head>  <title>考試系統</title>  <meta http-equiv="accept-charset" charset="utf-8">  <script src="jquery.min.js"></script>  <script type="text/javascript">    function getjson() {      var radio = new Array();      for (var i = 1; i <= 5; i++) {//獲取radio的值        var radio_name = new String("radio_" + i);        radio[i - 1] = $('input:radio[name=' + radio_name + ']:checked').val()      }      for (var i = 1; i <= 2; i++) {//獲取checkbox的的輸入        var checkbox_name = new String("checkbox_" + i);        var chk_value = [];        $('input:checkbox[name=' + checkbox_name + ']:checked').each(function () {          chk_value.push($(this).val());        });        radio[i + 4] = "";//置為空        for (var j = 0; j < chk_value.length; j++) {          radio[i + 4] = radio[i + 4] + chk_value[j];        }      }      //數組轉json串      var json = JSON.stringify(radio);      return json;    }    function my_confirm() {      var json = getjson();      var msg = "您真的答案是:" + json + ",是否確認提交";      if (confirm(msg) == true) {        window.location.href = "result.html?radio=" + 5 + "checkbox=" + 2 + "&json=" + json;      } else {        return false;      }    }    $(function () {      var m = 1;      var s = 10;      setInterval(function () {        if (m >= 0) {          if (s < 10) {            $('#time').html("剩余時間:" + m + ':0' + s);          } else {            $('#time').html("剩余時間:" + m + ':' + s);          }          s--;          if (s < 0) {            s = 59;            m--;          }          if (m == 0 && s < 1) {            window.location.href = "result.html?radio=" + 5 + "checkbox=" + 2 + "&json=" + getjson();          }        }      }, 1000)    })  </script></head><body><h3 style="float: left">2016--2017學年期末測試題</h3><div id="time" style="color:red;float: right;margin: 12px 20px 0 0;padding: 0 0 0 0;font-size: xx-large"></div><br/><br/><br/><hr/><h4>一、單選題(每題12分,滿分60分)</h4>1.當方法遇到異常又不知如何處理時,下列() 做法是正確的。<br><input type="radio" name="radio_1" value="A">A、捕獲異常<br><input type="radio" name="radio_1" value="B">B、拋出異常<br><input type="radio" name="radio_1" value="C">C、聲明異常<br><input type="radio" name="radio_1" value="D">D、嵌套異常<br>2.下列說法錯誤的是() <br><input type="radio" name="radio_2" value="A">A、在java中一個類被聲明為final類型,表示該類不能被繼承。<br><input type="radio" name="radio_2" value="B">B、當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,這叫引用傳遞。<br><input type="radio" name="radio_2" value="C">C、一個類不能既被聲明為 abstract,又被聲明為final。<br><input type="radio" name="radio_2" value="D">D、方法的覆蓋(Overriding)和重載(Overloading)是Java多態性的表現,他們沒有區別。<br>3.下列創建數組的方法哪個是錯誤的? <br><input type="radio" name="radio_3" value="A">A、Date[] arr = new Date[5];<br><input type="radio" name="radio_3" value="B">B、Date arr[] = new Date[];<br><input type="radio" name="radio_3" value="C">C、Date arr[][] = new Date[4][5];<br><input type="radio" name="radio_3" value="D">D、Date arr[][] = new Date[4][];<br>4.在讀文件Employee.txt 時,可以直接使用該文件作為參數的類是() <br><input type="radio" name="radio_4" value="A">A、BufferedReader<br><input type="radio" name="radio_4" value="B">B、FileInputStream<br><input type="radio" name="radio_4" value="C">C、DataOutputStream<br><input type="radio" name="radio_4" value="D">D、DataInputStream<br>5.下列關于線程的說法中,錯誤的是? <br><input type="radio" name="radio_5" value="A">A、線程必須通過方法start() 來啟動。<br><input type="radio" name="radio_5" value="B">B、線程創建后,其優先級是可以改變的。<br><input type="radio" name="radio_5" value="C">C、實現Runnable接口或者從Thread類派生的線程類沒有區別。<br><input type="radio" name="radio_5" value="D">D、當對象用synchronized 修飾時,表明該對象在任一時刻只能由一個線程訪問。<br><br/><h4>二、多選題(每題20分,滿分40分,錯選、少選、多選不得分)</h4>6.下列說法正確的是() <br><input type="checkbox" name="checkbox_1" value="A">A、在java中一個類被聲明為final類型,表示該類不能被繼承。<br><input type="checkbox" name="checkbox_1" value="B">B、當一個對象被當作參數傳遞到一個方法后,此方法可改變這個對象的屬性,這叫引用傳遞。<br><input type="checkbox" name="checkbox_1" value="C">C、一個類不能既被聲明為 abstract,又被聲明為final。<br><input type="checkbox" name="checkbox_1" value="D">D、方法的覆蓋(Overriding)和重載(Overloading)是Java多態性的表現,他們沒有區別。<br>7.當方法遇到異常又不知如何處理時,下列() 做法是不正確的。<br><input type="checkbox" name="checkbox_2" value="A">A、捕獲異常<br><input type="checkbox" name="checkbox_2" value="B">B、拋出異常<br><input type="checkbox" name="checkbox_2" value="C">C、聲明異常<br><input type="checkbox" name="checkbox_2" value="D">D、嵌套異常<br><hr/><input type="button" onclick="my_confirm()" value="考試完成"></body></html>

--------------------------------------------------------------------------------

result.html

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>考試結果</title>  <script src="jquery.min.js"></script>  <script>    //獲取url中的參數    function getUrlParam(name) {      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //構造一個含有目標參數的正則表達式對象      var r = window.location.search.substr(1).match(reg); //匹配目標參數      if (r != null) return unescape(r[2]);      return null; //返回參數值    }    function showResult() {      var answer = ["B", "D", "B", "B", "D", "ABC", "ACD"];//標準答案      var answer_score = [12, 12, 12, 12, 12, 20, 20];//答案的分數      var user_answer = JSON.parse(getUrlParam("json"));//獲取用戶答案      var radio_num = parseInt(getUrlParam("radio"));//獲取單選個數      var checkbox_num = parseInt(getUrlParam("checkbox"));//獲取多選個數      var radio_result = 0;//單選分數      var checkbox_result = 0;//多選分數      var radio_right_num = 0;//單選答對個數      var checkbox_right_num = 0;//多選答對個數      var result = 0;//總分數      var user_answer_result = new Array();//用戶沒到題的答題情況      for (var i = 0; i < user_answer.length; i++) {        if (user_answer[i] == answer[i]) {          if (i < radio_num) {            radio_result = radio_result + answer_score[i];            radio_right_num++;          } else {            checkbox_result = checkbox_result + answer_score[i];            checkbox_right_num++;          }          user_answer_result[i] = "正確";        } else {          user_answer_result[i] = "錯誤";        }      }      result = checkbox_result + radio_result;      //結果展示      var show_result1;      var show_result2;      var show_result3;      var show_result4;      var show_result5;      var show_result6;      show_result1 = "你的答案結果為:";      for (var i = 0; i < user_answer.length; i++) {        show_result1 = show_result1 + (i + 1) + ":" + user_answer_result[i] + "; ";      }      show_result2 = "總題目個數:" + user_answer.length;      show_result3 = "答對單選題題目個數:" + radio_right_num + "; 得分:" + radio_result;      show_result4 = "答對多選題題目個數:" + checkbox_right_num + "; 得分:" + checkbox_result;      show_result5 = "答錯題目個數:" + (user_answer.length - radio_right_num - checkbox_right_num);      show_result6 = " 本次考試總成績為:" + result;      $("p#show_result1").html(show_result1);      $("p#show_result2").html(show_result2);      $("p#show_result3").html(show_result3);      $("p#show_result4").html(show_result4);      $("p#show_result5").html(show_result5);      $("p#show_result6").html(show_result6);    }  </script></head><body><h2>考試結束!</h2><hr/><input type="button" onclick="showResult()" value="查看結果"><p id="show_result1"><p><hr/><p id="show_result2"></p><p id="show_result3"></p><p id="show_result4"></p><p id="show_result5"></p><hr/><p id="show_result6"></p></body></html>

結果如下圖:

這里寫圖片描述

總結

以上所述是小編給大家介紹的JS實現簡單的選擇題測評系統代碼思路詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: SHOW| 莱州市| 通辽市| 蓬莱市| 石台县| 抚顺县| 水富县| 宿迁市| 红河县| 昆明市| 廉江市| 富宁县| 陈巴尔虎旗| 肃北| 肃北| 鹿邑县| 册亨县| 唐山市| 兴安县| 通山县| 大冶市| 芦溪县| 志丹县| 古浪县| 南昌县| 高密市| 瑞昌市| 淮安市| 读书| 濮阳县| 辽阳市| 临江市| 股票| 洱源县| 阳曲县| 定陶县| 五寨县| 元朗区| 泗洪县| 简阳市| 大邑县|