zoukankan      html  css  js  c++  java
  • 通过游戏认识 --- JQuery与原生JS的差异

     
    前言

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

    今天,影子就通过一个小游戏,剪刀石头布,来给大家介绍下,两者之间的区别。

    1、原生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>

     结果:

    2、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         

    结果:

    3、JQuery与原生JS

    从大家从上边的例子中,相信大家发现了,实现相同的功能,两者的代码量是不一样的。JQuery比JS少了许多,而这只是一个小游戏的差距。

    现在,影子就来分析下原因:

    1、首先,要使用jQuery就必须先导入JQuery.x.x.x.js文件;

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

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

    下面给大家举个例子:

    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方便,但是,大家也不能因此而放弃JS要知道,JQuery也只是从JD封装打包而来的。

    而且,在一些框架中,也是不支持JQuery而是要求使用JS的。所以,大家在追求便捷的时候,也不要忘了“基础”哦!!

  • 相关阅读:
    docker 容器管理常用命令
    第一章 入门示例
    rsyslog 日志服务器端配置
    如何利用一个按钮绑定两个事件
    select下拉框有了空行怎么办
    如何设置select下拉禁止选择
    mysql utf8 中文
    数据化决策的魅力
    数据化决策的魅力
    minor.major version 详解
  • 原文地址:https://www.cnblogs.com/2502778498spw/p/7860854.html
Copyright © 2011-2022 走看看