DOM技術實現競賽題頁面

来源:http://www.cnblogs.com/Amanda-Xing/archive/2016/08/16/5776499.html
-Advertisement-
Play Games

DOM技術實現競賽題頁面 這一段時間學習了DOM操作和JS開發,我就自己開發一個競賽題的頁面。 一、業務需求 1、目標:做一個一百道選擇題的頁面 2、功能: 顯示題目和選項。 下一題上一題的按鈕,到第一題和第一百題時停止。 答對了顯示笑臉和笑話,答錯了顯示苦臉和正確答案。 二、開發思路 採用自頂向下 ...


DOM技術實現競賽題頁面

 

這一段時間學習了DOM操作和JS開發,我就自己開發一個競賽題的頁面。

一、業務需求

1、目標:做一個一百道選擇題的頁面

2、功能:

  • 顯示題目和選項。
  • 下一題上一題的按鈕,到第一題和第一百題時停止。
  • 答對了顯示笑臉和笑話,答錯了顯示苦臉和正確答案。

二、開發思路

採用自頂向下法,分兩步實現。第一步,實現題目顯示和上一題下一題按鈕,稱為第一部分;第二步,顯示提交按鈕、笑臉/哭臉和笑話,稱為第二部分。先實現界面再完成代碼。

第一部分——界面,<p>顯示標題<input radio>顯示選項兩個<img>分別顯示左右箭頭表示上一題和下一題。

第二部分——界面, <img>顯示提交按鈕,兩個<img>顯示哭臉和笑臉,<textarea>顯示笑話或正確答案,在提交之前笑臉/哭臉和textarea都隱藏。

代碼部分通過流程圖來展示。

三、流程圖

包含四段代碼,分別是上一題、下一題和提交三個按鈕,<body>的onload裡面的初始化部分。

1、初始化的流程圖:

2、上一題的流程圖:

 

3、下一題的流程圖:

 

4、提交的流程圖:

 

 

四、技術儲備

要實現這個效果需要瞭解html, js和DOM操作。 Html部分, 會用到<from>,<textarea>和<input><img>等標簽;Js部分,瞭解基礎操作,包括變數,條件判斷和數組;DOM操作部分,需要getElementById,getElementsByTagName和innerHTML屬性。

五、部分代碼

 1 function submit_quiz(){
 2     //checked_num用來定義四個選項中選擇了哪一個
 3     var checked_num="A";
 4     //radios用來保存所有的input數組
 5     var radios=document.getElementsByTagName("input")
 6     //checked==true用來判斷選項是否為正確
 7     if(radios[0].checked==true) checked_num="A"
 8     else if(radios[1].checked) checked_num="B"
 9     else if(radios[2].checked) checked_num="C"
10     else checked_num="D";
11     //表示如果選擇的是當前題目的答案是正確的,就顯示笑臉和當前笑話隱藏哭臉
12     if(checked_num==quiz_answers[cur_quiz].substr(-1,1)) {
13         document.getElementById("loser").hidden=true;
14         document.getElementById("smile").hidden=false;
15         document.getElementById("bonus").hidden=false;
16         document.getElementById("bonus").value=quiz_bonus[cur_bonus]
17         //cur_bonus==15 cur_bonus=0表示笑話顯示到第16個就重新回到第1個(只有16個笑話)
18         if(cur_bonus==15) cur_bonus=0
19         //用來判斷當前是哪一個,如果題目沒變是就不變,再按“提交”都沒用
20         else if(cur_quiz_bak==cur_quiz) return
21         //表示否則當前笑話變為下一個,並且保留答對題的值,按“提交”也不跳轉
22         else{ cur_bonus+=1 ;cur_quiz_bak=cur_quiz;}
23 
24     }

六、實現效果

主要有三個界面:一個是題目界面;一個是正確答案的界面;一個是錯誤答案的界面。如下所示

 

題目界面

 

 

 

正確答案界面

 

錯誤答案界面

 說明:四個選項的間距沒有調整好,還沒掌握如何實現。

源碼地址:https://github.com/1075237202/quiz.git

博客地址: https://www.cnblogs.com/Amanda-Xing/

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、MVVM模式介紹: 在網上看過很多的MVVM中各塊的介紹,感覺很混亂。找到如下的描述感覺很合理,也很好理解(https://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx)。 二、模式分析 在項目中使用這個模型,感覺有2點需要 ...
  • 作為初學者在這裡實不宜談博客,只想把自己學到的想到的總結一下,以便自己回顧知識,如能被大神無意撇到我的文章,能夠對於不足進行指導更是幸運,若給現在針對本個問題還處於迷茫的朋友帶來一絲借鑒也是開心! 盲人點燈,多多指點 ...
  • toggleClass 用來給匹配元素切換類 語法 "參考 http://www.w3schools.com/jquery/html_toggleclass.asp " 但是個人感覺應該是這樣的: 同時指定了classname和function 只有classname生效 參數說明 Paramete ...
  • 在Web項目的開發中,js,css文件會隨著項目的開發變得越來越多,越來越大,這就給給性能方面帶來一些問題,如,頁面引入的的js,css越多的話,那麼對就增加了http請求數,解決該問題的一個好的方法就是合併js,css文件. ...
  • 自己對canvas,但又有一顆做游戲的心TT。然後記錄一下對canvas的學習吧,用一個按方向鍵控制的小圓點來做練習。(編程時用了一些es6的語法) 示例的html很簡單,只有一個canvas元素: 這裡可以看到我在canvas標簽里直接定義了寬和高,這和在css裡面定義是不同的,canvas元素其 ...
  • Array類型是ECMAScript中最常用的引用類型。ECMAScript中的數據與其它大多數語言中的數組有著相當大的區別。雖然ECMAScript中的數據與其它語言中的數組一樣都是數據的有序列表,但不同的是,ECMAScript數組中的每一項可以保存任何類型的數據,無論是數值、字元串或者是對象。 ...
  • 這次的分享,主要還是想跟大家聊聊Javascript語言中很重要的概念之一,對象。為什麼說之一呢?因為Javascript其他重要概念還包括:作用域 作用域鏈 繼承 閉包 函數 繼承 數組 ...... 有機會會跟大家分享這些概念的。以下的介紹會分為如下:1:前言2:概述 2.1:對象創建 2.2: ...
  • 今天我又碼了兩個特效:一個是用原生input[type=range]的,另一個完全自定義的;下麵是完整代碼和演示: <!DOCTYPE html tip{ position: absolute; top: 30px; left: 0; right: 0; width: 200px; height: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...