JS怎么實(shí)現(xiàn)簡(jiǎn)單的選擇題測(cè)評(píng)系統(tǒng)

這篇文章主要介紹JS怎么實(shí)現(xiàn)簡(jiǎn)單的選擇題測(cè)評(píng)系統(tǒng),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

十載建站經(jīng)驗(yàn), 成都網(wǎng)站建設(shè)、網(wǎng)站制作客戶的見證與正確選擇。成都創(chuàng)新互聯(lián)公司提供完善的營(yíng)銷型網(wǎng)頁建站明細(xì)報(bào)價(jià)表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。

js的作用是什么

1、能夠嵌入動(dòng)態(tài)文本于HTML頁面。2、對(duì)瀏覽器事件做出響應(yīng)。3、讀寫HTML元素。4、在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù)。5、檢測(cè)訪客的瀏覽器信息。6、控制cookies,包括創(chuàng)建和修改等。7、基于Node.js技術(shù)進(jìn)行服務(wù)器端編程。

包含內(nèi)容:JS封裝表單,JS校驗(yàn)表單

說是測(cè)評(píng)系統(tǒng),感覺只能算是一個(gè)小小的Demo,很水,,沒有數(shù)據(jù)庫庫,,僅使用JS做簡(jiǎn)單的選擇題測(cè)評(píng)系統(tǒng)

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

一、設(shè)計(jì)思路

表單封裝:

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

【2】放置多個(gè)input標(biāo)簽,作為輸入項(xiàng)

【3】編寫JS獲取輸入項(xiàng),并通過get方式提交到另一個(gè)頁面

校驗(yàn)表單(顯示結(jié)果)

【1】獲取get傳入的參數(shù)

【2】通過JS解析

【3】顯示到相應(yīng)位置

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

二、參考源碼如下

request.html

<html>
<head>
  <title>考試系統(tǒng)</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];
        }
      }
      //數(shù)組轉(zhuǎn)json串
      var json = JSON.stringify(radio);
      return json;
    }
    function my_confirm() {
      var json = getjson();
      var msg = "您真的答案是:" + json + ",是否確認(rèn)提交";
      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("剩余時(shí)間:" + m + ':0' + s);
          } else {
            $('#time').html("剩余時(shí)間:" + 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>
<h4 >2016--2017學(xué)年期末測(cè)試題</h4>
<div id="time" ></div>
<br/><br/><br/>
<hr/>
<h5>一、單選題(每題12分,滿分60分)</h5>
1.當(dāng)方法遇到異常又不知如何處理時(shí),下列() 做法是正確的。<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.下列說法錯(cuò)誤的是() <br>
<input type="radio" name="radio_2" value="A">A、在java中一個(gè)類被聲明為final類型,表示該類不能被繼承。<br>
<input type="radio" name="radio_2" value="B">B、當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,這叫引用傳遞。<br>
<input type="radio" name="radio_2" value="C">C、一個(gè)類不能既被聲明為 abstract,又被聲明為final。<br>
<input type="radio" name="radio_2" value="D">D、方法的覆蓋(Overriding)和重載(Overloading)是Java多態(tài)性的表現(xiàn),他們沒有區(qū)別。<br>
3.下列創(chuàng)建數(shù)組的方法哪個(gè)是錯(cuò)誤的? <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 時(shí),可以直接使用該文件作為參數(shù)的類是() <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.下列關(guān)于線程的說法中,錯(cuò)誤的是? <br>
<input type="radio" name="radio_5" value="A">A、線程必須通過方法start() 來啟動(dòng)。<br>
<input type="radio" name="radio_5" value="B">B、線程創(chuàng)建后,其優(yōu)先級(jí)是可以改變的。<br>
<input type="radio" name="radio_5" value="C">C、實(shí)現(xiàn)Runnable接口或者從Thread類派生的線程類沒有區(qū)別。<br>
<input type="radio" name="radio_5" value="D">D、當(dāng)對(duì)象用synchronized 修飾時(shí),表明該對(duì)象在任一時(shí)刻只能由一個(gè)線程訪問。<br>
<br/>
<h5>二、多選題(每題20分,滿分40分,錯(cuò)選、少選、多選不得分)</h5>
6.下列說法正確的是() <br>
<input type="checkbox" name="checkbox_1" value="A">A、在java中一個(gè)類被聲明為final類型,表示該類不能被繼承。<br>
<input type="checkbox" name="checkbox_1" value="B">B、當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,這叫引用傳遞。<br>
<input type="checkbox" name="checkbox_1" value="C">C、一個(gè)類不能既被聲明為 abstract,又被聲明為final。<br>
<input type="checkbox" name="checkbox_1" value="D">D、方法的覆蓋(Overriding)和重載(Overloading)是Java多態(tài)性的表現(xiàn),他們沒有區(qū)別。<br>
7.當(dāng)方法遇到異常又不知如何處理時(shí),下列() 做法是不正確的。<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>考試結(jié)果</title>
  <script src="jquery.min.js"></script>
  <script>

    //獲取url中的參數(shù)
    function getUrlParam(name) {
      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //構(gòu)造一個(gè)含有目標(biāo)參數(shù)的正則表達(dá)式對(duì)象
      var r = window.location.search.substr(1).match(reg); //匹配目標(biāo)參數(shù)
      if (r != null) return unescape(r[2]);
      return null; //返回參數(shù)值
    }
    function showResult() {
      var answer = ["B", "D", "B", "B", "D", "ABC", "ACD"];//標(biāo)準(zhǔn)答案
      var answer_score = [12, 12, 12, 12, 12, 20, 20];//答案的分?jǐn)?shù)
      var user_answer = JSON.parse(getUrlParam("json"));//獲取用戶答案
      var radio_num = parseInt(getUrlParam("radio"));//獲取單選個(gè)數(shù)
      var checkbox_num = parseInt(getUrlParam("checkbox"));//獲取多選個(gè)數(shù)
      var radio_result = 0;//單選分?jǐn)?shù)
      var checkbox_result = 0;//多選分?jǐn)?shù)
      var radio_right_num = 0;//單選答對(duì)個(gè)數(shù)
      var checkbox_right_num = 0;//多選答對(duì)個(gè)數(shù)
      var result = 0;//總分?jǐn)?shù)
      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] = "錯(cuò)誤";
        }
      }
      result = checkbox_result + radio_result;
      //結(jié)果展示
      var show_result1;
      var show_result2;
      var show_result3;
      var show_result4;
      var show_result5;
      var show_result6;
      show_result1 = "你的答案結(jié)果為:";
      for (var i = 0; i < user_answer.length; i++) {
        show_result1 = show_result1 + (i + 1) + ":" + user_answer_result[i] + ";&nbsp;";
      }
      show_result2 = "總題目個(gè)數(shù):" + user_answer.length;
      show_result3 = "答對(duì)單選題題目個(gè)數(shù):" + radio_right_num + ";&nbsp;得分:" + radio_result;
      show_result4 = "答對(duì)多選題題目個(gè)數(shù):" + checkbox_right_num + ";&nbsp;得分:" + checkbox_result;
      show_result5 = "答錯(cuò)題目個(gè)數(shù):" + (user_answer.length - radio_right_num - checkbox_right_num);
      show_result6 = " 本次考試總成績(jī)?yōu)椋?quot; + 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>
<h3>考試結(jié)束!</h3>
<hr/>
<input type="button" onclick="showResult()" value="查看結(jié)果">
<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>

結(jié)果如下圖:

JS怎么實(shí)現(xiàn)簡(jiǎn)單的選擇題測(cè)評(píng)系統(tǒng)

以上是“JS怎么實(shí)現(xiàn)簡(jiǎn)單的選擇題測(cè)評(píng)系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章題目:JS怎么實(shí)現(xiàn)簡(jiǎn)單的選擇題測(cè)評(píng)系統(tǒng)
新聞來源:http://bm7419.com/article2/jdcpoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、虛擬主機(jī)云服務(wù)器、企業(yè)網(wǎng)站制作、軟件開發(fā)、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)