jquery实现心算练习代码


Posted in Javascript onDecember 06, 2010

在线演示:
http://demo.3water.com/js/jquery_xinsuan/index.htm
看看大家做完要多长时间,代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
<title>心算练习,Do Your Best</title> 
<style type="text/css"> 
body 
{ 
text-align: center; 
padding: 0; 
margin: 0; 
} 
div 
{ 
width: 1000px; 
margin: auto; 
} 
div table 
{ 
border-collapse: collapse; 
width: 100%; 
table-layout: fixed; 
text-align: left; 
} 
div table td 
{ 
border: 1px solid silver; 
padding-left: 3em; 
} 
div span 
{ 
padding: 3px 8px; 
} 
table input 
{ 
width: 3em; 
} 
.red 
{ 
color: Red; 
} 
.green 
{ 
color: Green; 
} 
</style> 
<script type="text/javascript" src="http://demo.3water.com/jslib/jquery/jquery-1.4.4.js"></script> 
<script type="text/javascript"> $(function () { 
fnInitTable(2); 
fnHideResult(); 
}); 
//显示正确结果及分数 
function fnShowResult() { 
var vCount = 0; 
$("table tr td").each(function (i) { 
var vUserResult = $.trim($(this).find("input").val()); 
var vCorrectResult = $.trim($(this).find("span:last-child").text()); 
if (vUserResult == vCorrectResult) { 
vCount++; 
$(this).find("span:last-child").show().addClass("green"); 
} 
else { 
$(this).find("span:last-child").show().addClass("red"); 
} 
}); 
$("#score").text(vCount); 
} 
function fnHideResult() { 
$("table td span:last-child").hide(); 
} 
//生成尾数不为零的随机数 
function fnRandomBy(parUnder, parOver) { 
var vResult = 0; 
while (vResult % 10 == 0) { 
switch (arguments.length) { 
case 1: 
vResult = parseInt(Math.random() * parUnder + 1); 
break; 
case 2: 
vResult = parseInt(Math.random() * (parOver - parUnder + 1) + parUnder); 
break; 
default: 
vResult = 0; 
break; 
} 
} 
return vResult; 
} 
function fnInitTable(parDigit) { 
var vPreValue; 
var vNextValue; 
var vResultt; 
$("table").empty(); 
for (var i = 0; i < 10; i++) { 
$("table").append("<tr></tr>"); 
for (var k = 0; k < 3; k++) { 
vPreValue = fnRandomBy(10, 100); 
if (parDigit == 2) { 
vNextValue = fnRandomBy(10, 100); 
} 
else { 
vNextValue = fnRandomBy(100, 1000); 
} 
vResultt = vPreValue * vNextValue; 
$("table tr:last").append("<td>" + vPreValue + "<span>×</span>" + vNextValue + "<span>=</span>" + "<input type='text' /\>" + "<span>" + vResultt + "</span>" + "</td>"); 
} 
$("table").append("</tr>"); 
} 
fnInit(); 
} 
function fnInit() { 
fnResetTime(); 
fnHideResult(); 
$("table input").attr("disabled", "true"); 
$("#score").text(""); 
} 
var vTimerID = 0; 
//开始按钮连续单击会使得时间加快,vContinueClick可判断是否连续单击,多谢小龙女提示 
var vContinueClick = 0; 
function fnBegin() { 
//分数的显示与否来确认是否单击结束按钮 
if ($.trim($("#score").text()) != "") { 
fnResetTime(); 
$("table input").val(""); 
} 
fnHideResult(); 
vContinueClick++; 
if (vContinueClick == 1) { 
vTimerID = setInterval("fnUpdateTime()", 1000); 
} 
$("table input").removeAttr("disabled"); 
} 
function fnPause() { 
vContinueClick = 0; 
$("table input").attr("disabled", "true"); 
clearInterval(vTimerID); 
} 
function fnStop() { 
fnPause(); 
fnShowResult(); 
} 
function fnResetTime() { 
$("#hour").text("00"); 
$("#minute").text("00"); 
$("#second").text("00"); 
} 
function fnUpdateTime() { 
//小龙女短时间内搞定,parseInt()的参数非常重要 
var vSecond = parseInt($("#second").text(), 10); 
var vMinute = parseInt($("#minute").text(), 10); 
var vHour = parseInt($("#hour").text(), 10); 
//处理秒数 
vSecond++; 
if (vSecond >= 0 && vSecond < 10) { 
$("#second").text("0" + vSecond); 
} else if (vSecond >= 10 && vSecond <= 60) { 
$("#second").text(vSecond); 
} else { 
$("#second").text("00"); 
//大于60秒,就需处理分钟 
vMinute++; 
if (vMinute >= 0 && vMinute <= 9) { 
$("#minute").text("0" + vMinute); 
} else if (vMinute >= 10 && vMinute <= 60) { 
$("#minute").text(vMinute); 
} else { 
$("#minute").text("00"); 
//处理小时 
vHour++; 
if (vHour >= 0 && vHour <= 9) { 
$("#hour").text("0" + vHour); 
} 
else { 
$("#hour").text(vHour); 
} 
} 
} 
} 
</script> 
</head> 
<body> 
<div> 
<p> 
<span>计时:</span> <span id="hour">00</span>:<span id="minute">00</span>:<span id="second">00</span> 
<br /> 
<input type="button" name="" value="开始" onclick="fnBegin()" /> 
<input type="button" name="" value="暂停" onclick="fnPause()" /> 
<input type="button" name="" value="结束" onclick="fnStop()" /> 
<br /> 
<input type="button" name="pre" value="生成 2 × 2" onclick="fnInitTable(2)" /> 
<input type="button" name="" value="生成 2 × 3" onclick="fnInitTable(3)" /> 
<br /> 
分数:<span id="score"></span> 
</p> 
<table> 
</table> 
</div> 
</body> 
</html>

实现代码的过程中,有两个问题很棘手,一个是开始按钮连续单击,计时时间会迅速加快;二是如何判定玩家单击哪个按钮。问题得到小龙女的解答,加个标志位,好多问题就迎刃而解的。最大的收获就是代码的组织,若想代码量少,清晰的思路以及解决一个问题的好方法很重要。先实现,后优化,一种值得借鉴的方法!练习中还会有一些bug,希望大家多多指出!
Javascript 相关文章推荐
Javascript 获取链接(url)参数的方法
Feb 15 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 Javascript
JS仿百度搜索自动提示框匹配查询功能
Nov 21 Javascript
JS 数字转换研究总结
Dec 26 Javascript
jquery调取json数据实现省市级联的方法
Jan 29 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
简介JavaScript中的italics()方法的使用
Jun 08 Javascript
基于javascript实现九九乘法表
Mar 27 Javascript
JavaScript中关于iframe滚动条的去除和保留
Nov 17 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 Javascript
js实现京东秒杀倒计时功能
Jan 21 Javascript
解决layui的table插件无法多层级获取json数据的问题
Sep 19 Javascript
初窥JQuery(二)事件机制(2)
Dec 06 #Javascript
2010年最佳jQuery插件整理
Dec 06 #Javascript
jquery提升性能最佳实践小结
Dec 06 #Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
Dec 06 #Javascript
使用JS进行目录上传(相当于批量上传)
Dec 05 #Javascript
js对象的构造和继承实现代码
Dec 05 #Javascript
收集的一些Array及String原型对象的扩展实现代码
Dec 05 #Javascript
You might like
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
Bootstrap3 内联单选和多选框
2016/12/29 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
python实现删除文件与目录的方法
2014/11/10 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
python中下标和切片的使用方法解析
2019/08/27 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
linux系统都有哪些运行级别
2016/03/26 面试题
应届毕业生求职自荐书
2014/01/03 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL