一、构思

1.一个完整的程序分为开始,中间内容,以及结束。
2.下面的程序也是:开始页面→答题页面(题目,选项)→结束页面

二、代码分解

1.HTML页面代码
(1)定义好每个模块的div,再从大模块里面进行细分。由于适配的是移动端的,所以需要 设置meta元素的viewport属性。
(2)方便代码的简洁,引用了外部样式表。为了方便JavaScript的调用和编写,传入了一个JQuery包,能够方便的进行方法调用。其中具体的样式,自己添加一个js的包进行编写。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><meta name="viewport" content="width=375,user-scalable=no"><link rel="stylesheet" type="text/css" href="css/css.css"/></head><body><!--开始页面--><div class="page startGame active"><button class="startBtn">开始答题</button></div><!--答题页面--><div class="page gaming"><!--题目--><h1 class="timu"></h1><!--选项--><div class="options"></div></div><!--结束页面--><div class="page endGame"><h1>恭喜您获取:<span class="score">100</span>分</h1><button class="reStart">重新答题</button></div><script src="js/jquery-1.11.0.js"></script><script src="js/zdy.js"></script></body>
</html>

2.css样式表
该样式仅做参考,具体可根据需要进行调整

*{margin: 0;padding: 0;/*设置不会因为内边距和 边框撑开宽度和高度*/box-sizing: border-box;
}html,body{/*溢出隐藏*/overflow: hidden;width: 100%;height: 100%;background: skyblue;
}
.page{width: 375px;height: 100%;/*三个页面都重叠到一起*/position: absolute;left: 0;top: 0;background: skyblue;transform: translateX(375px);transition: all 1s;
}.active{/*!important让这个权限变高覆盖上面的,进行偏移*/transform: translateX(0px) !important;
}.startGame{display: flex;justify-content: center;align-items: center;
}
.startBtn{width: 200px;height: 60px;line-height: 60px;font-size: 30px;border: none;background: green;color: #fff;/*阴影不进行偏移 */box-shadow: 0 0 30px green;border-radius: 10px;
}.gaming{background: coral;padding: 40px 20px;
}
.gaming h1{margin: 20px 0px;font-size: 24px;color: #fff;
}
.gaming .options>div{margin: 10px 10px;padding: 5px 10px;color: #fff;border-radius: 7px;
}
/*正确显示的颜色*/
.correct{background: green;
}
/*错误显示的颜色*/
.error{background: red;
}/*结束页面*/
.endGame{display: flex;flex-direction: column;justify-content: center;align-items: center;
}
.endGame h1{margin: 40px;
}
.reStart{width: 200px;height: 60px;line-height: 60px;font-size: 30px;border: none;background: green;color: #fff;/*阴影不进行偏移 */box-shadow: 0 0 30px green;border-radius: 10px;
}

3.自定义JavaScript代码
里面有较为详细的说明,可以根据具体功能,进行修改。

var tikuList = [];
var currenTimu = {};
var score = 0;
//是否还能继续选择
var isChoose = false;
//设置答题数量
var num = 10;//ajax获取题目内容
$.get("dati.json",function(res){//用了jquery相当于res = JSON.parse(res.responseText)//自动获取响应数据以字符串形式返回,不用自己多写这一句console.log(res)//把获取到的所有数据放入数组中tikuList = res
})//点击开始答题按钮切换页面
$(".startBtn").click(function(e){$(".gaming").addClass("active")$(".startGame").removeClass("active")//每次点击随机出个题目并显示在页面上randomRender()
})function randomRender(){//获取题库数组中,随机出的整数(pasetInt)索引值      parseInt方法       返回由字符串转换得到的整数。var randomIndex = parseInt(Math.random()*tikuList.length);//每次拿出一个题目放到一个对象里,并把这个题目从数组中删除//这个题目对象是一个数组,所以写个0获取当前对象currentTimu = tikuList.splice(randomIndex,1)[0];console.log(currentTimu);//获取页面标签题目,并把对象字符串中的quiz(题目)设置显示在页面上$(".timu").html(currentTimu.quiz)//每次执行清空一次$(".options").html("");//遍历题目对象字符串中的选择options内容                 内容        索引currentTimu.options.forEach(function(item,index){$(".options").append(`<div data-index="${index}">${index+1}.${item}</div>`)})}//选项的点击事件
$(".options").click(function(e){if(!isChoose){//把索引值转成数字      parseInt方法       返回由字符串转换得到的整数。var index = parseInt(e.target.dataset.index);console.log(index+1);//题目中的index是0开始,answer是1开始,所以要加一//若答案与点击按钮的索引一致if(currentTimu.answer==(index+1)){score += 10;//把获取的索引添加正确的背景颜色$("[data-index="+index+"]").addClass("correct")}else{var corectindex = currentTimu.answer-1;//若点击的索引不对,把正确的背景颜色和错误的背景颜色都显示出来$("[data-index="+corectindex+"]").addClass("correct")$("[data-index="+index+"]").addClass("error")}isChoose = true;//每点击一次,答题的数量减1num --;//延迟一秒进行切换setTimeout(function(){//答题数量结束了,切换到结束页面,否则切换到下一题if(num==0){$(".endGame").addClass("active")//获取得分标签,把上面累计的得分设置显示到页面上$(".score").html(score);}else{isChoose = false;randomRender()}},1000)}})//点击重新答题按钮后,重新刷新页面进行重新答题
$(".reStart").click(function(){//location.reload()    DOM方法   刷新页面location.reload()
})

三、效果展示

1.开始页面
点击答题按钮,开始答题

2.答题页面
若点击正确,背景颜色显示为绿色。
若点击错误,把对的答案显示为绿色,自己点击错误的显示为红色


3.结束页面
每次选择都会进行统计,一共十题,最后把点击对的题目进行统计,显示分数

四、总结

其实代码并不多,重要的是理清楚思路,还是很容易能写出来。把模块划分,划分的越细,解决起来也越容易。遇到不了解,不清楚的代码,要多学会去查,去找。所谓“熟读唐诗三百首,不会写诗也会吟”,这样就算再难的知识点,就算你不能迎刃而解,也能做到心中有数。

JavaScript写移动端答题网页程序相关推荐

  1. HPH写好的答题小程序怎么放到微信小游戏里,微信开发者工具

    HPH写好的答题小程序怎么放到微信小游戏里,微信开发者工具 HPH写好的答题小程序怎么放到微信小游戏里,微信开发者工具 用wamp写的答题小程序,三个页面,一个数据库表,我想放到微信小游戏里,谁会弄帮 ...

  2. 使用JavaScript写的操作系统和输入法程序

    JavaScript是一门客户端的脚本语言,但是你千万不要认为它功能弱哦,因为你看了下面的例子之后就明白了. 一. 用JavaScript写的操作系统 呵呵,那天同事开玩笑说,要是有个用JS写的操作系 ...

  3. 看网友写的JavaScript写的操作系统和输入法程序NB了

    JavaScript是一门客户端的脚本语言,但是你千万不要认为它功能弱哦,因为你看了下面的例子之后就明白了. 一. 用JavaScript写的操作系统     呵呵,那天同事开玩笑说,要是有个用JS写 ...

  4. 使用JavaScript写的操作系统和输入法程序,太强了!

    JavaScript是一门客户端的脚本语言,但是你千万不要认为它功能弱哦,因为你看了下面的例子之后就明白了. 一. 用JavaScript写的操作系统 呵呵,那天同事开玩笑说,要是有个用JS写的操作系 ...

  5. 用JavaScript写的一个摇号程序(随机数)

    <script type="text/javascript"></script> 老弟叫我帮忙他找个摇号程序,号码从001-200. 最近刚看了JS高级编程 ...

  6. js摇号程序_用JavaScript写的一个摇号程序(随机数)

    老弟叫我帮忙他找个摇号程序,号码从001-200.最近刚看了JS高级编程的随机数这方面的知识.就自己开始动手做了一个. 代码: var theTimer; var iNum=0; //var flag ...

  7. 从0到1使用python开发一个半自动答题小程序

    从0到1使用python开发一个半自动答题小程序 前言 最近每天都有玩微信读书上面的每日一答的答题游戏,完全答对12题后,可以瓜分无限阅读卡.但是从小就不太爱看书的我,很难连续答对12道题,由此,产生 ...

  8. 【大前端】使用html/css/javascript开发移动端(安卓,IOS)与桌面端(Win,mac,Linux)应用程序

    1.什么是大前端? 传统上,Web应用可分为前端(在浏览器中执行的部分)和后端(在服务器中执行的部分). 前端工程师的职责是以Web技术(HTML.CSS.JavaScript.DOM.Ajax等)实 ...

  9. 弹力细胞,一个由JavaScript写的网页小游戏

    弹力细胞 (BounceCell) 一个由JavaScript写的网页小游戏 作为大一菜鸟,这是我第一次比较正式的写文章 [害臊] 游戏玩法 通过鼠标或触屏控制屏幕底部的滑动弹板将发射的小球反弹出去撞 ...

最新文章

  1. cad画流程图的插件_CAD制图太慢?62款辅助插件汇总,款款精品,效率提升80%
  2. ubuntu安装新字体
  3. 【POJ1456】Supermarket
  4. 【实用】ABAP“FOR ALL ENTRIES”的Hints 优化
  5. it is important to delete your email mailbox in a frequent manner!
  6. 华科硕士,一个优秀的数据分析师
  7. 653B. Bear and Compressing
  8. arcgis几何修复有作用吗_修复损坏的 shapefile
  9. centos7安装界面、桌面记录(ubuntu没试过)
  10. 关于VS.NET RSACryptoServiceProvider的疑惑
  11. Python笔记(七)
  12. 修改笔记-批量去除附件售价
  13. 杰理AC692X系列---关于692x及693x的打开在线调EQ功能(4)
  14. 1寸2寸3寸5寸6寸8寸10寸照片的具体尺寸(附常用照片尺寸对照表)
  15. 谈一谈今年的移动互联网寒冬
  16. 港科夜闻丨香港科大团队最新研究:双色发射AIEgen用于无标记特异性识别dsDNA和SNPs检测...
  17. 设置spyder分辨率过高致其无法启动: The X11 connection broke: Maximum allowed requested length exceeded (code 4)
  18. mysql将公历农历转换_SQL农历转换函数(显示中文格式,加入润月的显示)
  19. 美团一面:说说前、后端分离权限控制设计和实现思路?
  20. dhcp设置(Padavan dhcp设置)

热门文章

  1. Anaconda 安装错误的解决办法
  2. 天正加载时在tshowbar卡死的解决方案
  3. 免息贷款但有手续费的年化利率计算方法及Java实现;
  4. eplan好看的电缆图表_eplan中怎样才能把整个项目的端子图表或者电缆图表生成到我指定的位置...
  5. VIDEO-DXGKRNL-FATAL-ERROR
  6. 条码打印四 - 1.打印管理库函数Winspool.drv
  7. 一个食品专业本科生的自白:能不吃最好别吃
  8. Webshell-Part1Part2
  9. Unity中EnableDisableComponent的用法
  10. 【饭谈】为什么别人都劝你别做外包?