前言

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

上一篇博客中,小编给大家展示了jQuery的一大优势,自定义插件。相信这个功能让各位都跃跃欲试,想要制作一个自己的插件了吧!在这里小编祝贺大家在成为大牛的路上向前跨了一步!!今天,小编就实现一个小游戏带大家领略jQuery的最大大优势,相比于原生的简洁,也就是“write Less,Do More”。

一、原生JS实现剪刀石头布游戏功能

话不多说,直接来代码!

HTML:

 1 <body>
 2
 3         <div id="body">
 4             <div id="tips">
 5                 请选择
 6             </div>
 7
 8             <div id="imgs">
 9                 <img src="插件/img/jiandao.png" id="jiandao" onclick="jianDao()"class="img1"/>
10                 <img src="插件/img/shitou.png" id="shitou" onclick="shiTou()"class="img1"/>
11                 <img src="插件/img/bu.png" id="bu" onclick="bU()" class="img1"/>
12             </div>
13
14             <div id="jieguo">
15                 <div class="jieguo">
16                     <div>您选择了</div>
17                     <img src="插件/img/daiding.png" id="myImg" />
18                 </div>
19
20                 <div class="pk">PK</div>
21
22                 <div class="jieguo">
23                     <div>系统选择了</div>
24                     <img src="插件/img/daiding.png" id="computer" />
25                 </div>
26             </div>
27
28             <div id="score">
29                 等待结果中....
30             </div>
31
32             <div id="scoreFen">
33                 <span>00</span>:<span>00</span>
34             </div>
35         </div>
36 </body>

css:

 1 <style type="text/css">
 2             *{ 3                 margin: 0px;
 4                 padding: 0px;
 5             }
 6
 7             #body{ 8                 width: 100%;
 9                 height: 700px;
10                 max-width: 500px;
11                 margin: 0 auto;
12                 background-color: #FAE738;
13                 overflow: hidden;
14             }
15
16             #tips{17                 margin-top: 40px;
18                 text-align: center;
19                 color: white;
20                 font-size: 36px;
21                 font-weight: bold;
22             }
23
24             #imgs{25                 width: 90%;
26                 margin: 20px auto;
27                 display: flex;
28                 justify-content: space-around;
29             }
30
31             #jieguo{32                 width: 90%;
33                 margin: 30px auto;
34                 display: flex;
35                 justify-content: space-around;
36             }
37
38             #jieguo .jieguo div{39                 height: 30px;
40                 width: 89px;
41                 line-height: 30px;
42                 text-align: center;
43                 color: white;
44             }
45
46             #jieguo .jieguo img{47                 height: 89px;
48             }
49
50             #jieguo .pk{51                 height: 120px;
52                 line-height: 120px;
53                 font-size: 48px;
54                 font-weight: bold;
55             }
56
57             #score,#scoreFen{58                 text-align: center;
59                 font-size: 24px;
60                 color: red;
61                 padding-top: 10px;
62             }
63
64         </style>

js:

1 <script src="JS/jquery-3.1.1.js" type="text/javascript"></script>

 1   <script type="text/javascript">
 2
 3         var jiandao = document.getElementById("jiandao");
 4         var shitou = document.getElementById("shitou");
 5         var bu = document.getElementById("bu");
 6         var myImg = document.getElementById("myImg");
 7         var computer = document.getElementById("computer");
 8         var score = document.getElementById("score");
 9         var scoreFen = document.getElementById("scoreFen");
10
11         var myScore=0,comScore=0;
12
13         var imgs = ["插件/img/jiandao.png","插件/img/shitou.png","插件/img/bu.png"];
14         console.log(imgs[0]);
15         jiandao.onclick = function(){
16             var imgSrc = jiandao.getAttribute("src");
17
18             myImg.setAttribute("src",imgSrc);
19             checkImg(imgSrc);
20         }
21
22         shitou.onclick = function(){
23             var imgSrc = shitou.getAttribute("src");
24             myImg.setAttribute("src",imgSrc);
25             checkImg(imgSrc);
26         }
27
28         bu.onclick = function(){
29             var imgSrc = bu.getAttribute("src");
30             myImg.setAttribute("src",imgSrc);
31             checkImg(imgSrc);
32         }
33
34
35         function checkImg(imgSrc){
36             var myIndex = imgs.indexOf(imgSrc);
37             var intervalId = setInterval(function(){
38                 var num = parseInt(Math.random()*3);
39                 computer.setAttribute("src",imgs[num]);
40
41             },20);
42
43             setTimeout(function(){
44                 clearInterval(intervalId);
45                 var comSrc = computer.getAttribute("src");
46                 var comIndex = imgs.indexOf(comSrc);
47                 if(myIndex==comIndex){
48                     score.innerHTML = "平局!再战一轮吧!";
49                 }else if(myIndex==0&&comIndex==2
50                          || myIndex==1&&comIndex==0
51                          || myIndex==2&&comIndex==1){
52                     score.innerHTML = "赢啦!继续虐他吧!";
53                     myScore++;
54                 }else{
55                     score.innerHTML = "输啦!继续努力吧!";
56                     comScore++;
57                 }
58                 myScore = (myScore+"").length<2?"0"+myScore:myScore+"";
59                 comScore = (comScore+"").length<2?"0"+comScore:comScore+"";
60
61                 scoreFen.firstElementChild.innerHTML = myScore;
62                 scoreFen.lastElementChild.innerHTML = comScore;
63
64             },400);
65         }
66
67
68
69     </script>

结果:

二、jQuery实现剪刀石头布

HTML代码与css代码请看上栗,毕竟只是实现功能的方式不用,布局是一样一样滴!

jQuery:

 1 <script type="text/javascript">
 2         $("#imgs>img").click(function(){
 3             checkImg($(this).attr("src"));
 4         });
 5
 6         var imgs = ["插件/img/jiandao.png","插件/img/shitou.png","插件/img/bu.png"];
 7         function checkImg(imgSrc){
 8             $("#myImg").attr("src",imgSrc);
 9             var id = setInterval(function(){
10                 var num = parseInt(Math.random()*3);
11                 $("#computer").attr("src",imgs[num]);
12             },20);
13
14             setTimeout(function(){
15                 clearInterval(id);
16                 var my = imgs.indexOf(imgSrc);
17                 var com = imgs.indexOf($("#computer").attr("src"));
18                 if(my==0&&com==2 || my==1&&com==0 || my==2&&com==1){
19                     $("#score").html("恭喜!您赢啦!");
20                     var mf = parseInt($("#scoreFen span:eq(0)").text())+1;
21                     mf = mf<10 ? "0"+mf : mf;
22                     $("#scoreFen span:eq(0)").text(mf);
23                 }else if(my==0&&com==0 || my==1&&com==1 || my==2&&com==2){
24                     $("#score").html("平局!再战一轮吧!");
25                 }else{
26                     $("#score").html("哈哈哈哈你输啦!!!");
27                     var cf = parseInt($("#scoreFen span:eq(1)").text())+1;
28                     cf = cf<10 ? "0"+cf : cf;
29                     $("#scoreFen span:eq(1)").text(cf);
30                 }
31             },500);
32         }
33     </script>
34         

结果:

三、JS&jQuery

大家从上边的例子也发现了,功能的实现上,原生用了60多行代码,而jQuery则用了30多行代码。少了将近的一般,这只是一个小游戏就有这么大的差距。

现在,小编带大家分析一下其中的原因:

3.1在语法上

1、jQuery在语法上,必须使用jQuery必须先导入JQuery.x.x.x.js文件;这个是必须的,小编就不多说了;

2、JQuery中的选择器:
$("选择器").函数();

原生中:获取节点要用.document.getElementById();

从这里就发现了吧,jQuery的简洁,这也是jQuery相对于原生最体现简洁的地方;

大家从上栗来看个例子:实现图片点击事件,并在下方改变更换图片,也就是替换图片url地址:

JS:

1 bu.onclick = function(){
2      var imgSrc = bu.getAttribute("src");
3      myImg.setAttribute("src",imgSrc);
4      checkImg(imgSrc);
5  }

jQuery:

1 function checkImg(imgSrc){
2 $("#myImg").attr("src",imgSrc);
3 }

3.2原生JS对象与JQuery对象

①使用$("")选中的对象是jQuery对象,只能调用jQuery的函数,而不能使用元素js的事件与函数;
    $("#p").click();  √
    $("#p").onclick = function(){}; ×
    
    解释:$("#p")是jQuery对象,.onclick是原生JS事件
    
    同理,使用document.getElement系列获取的原生JS对象,也不能使用jQuery相关函数。
    
    ②原生JS对象转为jQuery对象
    可以使用$()包裹原生JS对象即可转为jQuery对象。
    
    var p = document.getElementsByTagName("p");
    $(p).click();  √  原生JS的对象p已转为jQuery对象;
    
    ③jQuery对象转为原生JS对象。使用.get(index)或[index]:
    $("#p").get(0).onclick = function(){}  √
    $("#p")[0].onclick = function(){}  √

四、作者编

从上边,大家可以看出来了,jQuery真心很简洁而且好用!!但是,不可否认,原生JS真心灰常的强大,毕竟原生就是原生,有着无法取代的地位!只是代码的复杂性确实让我们又爱又恨!

而且,jQuery也是他的一个框架,虽然现在jQuery的地位已经和原生差不多相等了。但是小编提醒大家,一定要学号原生哟!

而且,小编听某位自称浩哥的帅锅说过,程序猿是一种非常懒得生物,所以大神们研究了这么多的框架,重要的是,有了这简单的jQuery,为何不用!

转载于:https://www.cnblogs.com/zxt-17862802783/p/7617976.html

JQuery原生js ——实现剪刀石头布小游戏相关推荐

  1. 如何用html5制作抽奖游戏,原生js实现抽奖小游戏

    这个小游戏可以设置为抽奖小游戏,也可以设置为随机点名器,这个软件实现可以多次获取同一个元素的 1.HTML结构代码如下: 开始点名 停止 幸运的的你 2.css样式设置页面代码如下: css代码不仅仅 ...

  2. js实现剪刀石头布小游戏

    这两天用js做了个剪刀石头布的小游戏,实现的是用户与电脑进行对战,原理比较简单,在此记录一下. 下面先说一下游戏的流程: 1.进入游戏先要设置自己的昵称: 2.进入游戏,选择自己的手势: 3.选好之后 ...

  3. 原生js 实现2048小游戏

    2048小游戏 首先2048小游戏离不开16个格子,我们通过html和css创建好对应的标签和样式, 然后开始js逻辑 <div id="box">//一个盒子里面16 ...

  4. 原生js做h5小游戏之打砖块

    前言 首先,先说明一下做这个系列的目的:其实主要源于博主希望熟练使用 canvas 的相关 api ,同时对小游戏的实现逻辑比较感兴趣,所以希望通过这一系列的小游戏来提升自身编程能力:关于 es6 语 ...

  5. 原生JS实现2048小游戏

    前几天玩了一款2048微信小程序,结果脑子一抽,想到了为什么不能自己用JS写一个 于是,下面这个玩意儿就诞生了... 实现思路大概是这样的,首先使用table表格完成页面布局,其次使用JS实现数字动态 ...

  6. 原生js完成拼图小游戏

    废话不说,看代码,图片可以自己找,我这直接引用了百度的了 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/x ...

  7. 原生JS制作抽奖小游戏

    <div class="box"><div id="grid1" class="grid">电信优惠卷</di ...

  8. html5猜数字游戏代码,js猜数字小游戏的简单实现代码

    复制代码 代码如下: 简易计算机 //获取随机数 function GetRandomNum(Min,Max) { var Range = Max - Min; var Rand = Math.ran ...

  9. 原生JS实现贪吃蛇游戏

    原生JS实现贪吃蛇游戏 贪吃蛇游戏(原生JavaScript) 贪吃蛇游戏思路分析 游戏思想: 面向对象的思想 三个js文件分别代表三个对象 三个对象相互独立,在HTML中控制全局 使用面向对象思想的 ...

  10. html五子棋悔棋,原生 JS + Canvas 实现五子棋游戏

    原标题:原生 JS + Canvas 实现五子棋游戏 || 一.功能模块 先看下现在做完的效果: 线上体验: https://wj704.github.io/five_game.html 主要功能模块 ...

最新文章

  1. 1.2 离散时间信号-采样
  2. C# :异步编程的注意点
  3. 【渝粤题库】陕西师范大学164117 企业组网技术 作业 (高起专)
  4. iOS UItextView监听输入特定字符跳转页面选择选项返回
  5. python--strip()用法-split()方法
  6. HCIE-Security Day21:GRE协议:实验(二)配置基于OSPF的GRE隧道
  7. ad怎么修改栅格_AD18怎么改变pcb原理图的网格大小
  8. PHP 快速解决跨域问题
  9. 毕业论文word格式
  10. Linux系统自动校准时间
  11. 买水货必看!你必须知道的10件事情
  12. ios16更新了什么内容 ios16更新内容汇总
  13. 常见光纤接头LC、FC、SC、ST
  14. modelsim 无objects窗口 的解决方法
  15. GAN介绍 - 相关研究课题
  16. linux setfont设置大小,setfont命令
  17. 实验08 路由器RIP动态路由配置实验报告
  18. Jekyll搭建个人博客 韩俊强的博客
  19. 双网卡单IP实现网卡冗余与负载均衡
  20. IntelliJ IDEA插件开发指南(一)

热门文章

  1. javascript 基础之手机端相关事件-touch(详细篇)(1)
  2. MySQL四种事务隔离级的说明
  3. 在mysql数据库中创建Oracle数据库中的scott用户表
  4. Linux Tomcat9 控制界面及管理配置
  5. synchronized 线程同步,添加对象锁与类锁
  6. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_11_练习:集合元素处理(Stream方式)...
  7. [HNOI2014]世界树
  8. 我在 B 站学习深度学习(生动形象,跃然纸上)
  9. webGL学习笔记一
  10. xml 操作组件(NewLife.XCode)