js連連看


js連連看
首先見證奇跡的時刻---效果圖如下:


實現主要分為三個部分:
一、創建元素塊
二、隨機分布元素塊
三、事件綁定

一、創建元素塊
生成span的元素標簽,並將標簽添加到父容器中,設置其left、top和background屬性。

/*
  *  creSpan 創建元素標簽
  *  n 指當前個數
  *  mpId 指父容器
  *  mleft 指其left屬性值
  *  mtop 指其top屬性值
  *  bgcolor 指其背景色屬性值
*/
   function creSpan(n,mpId,mleft,mtop,bgcolor){
      var mSpan = document.createElement("span");  
      var pId = mpId[0];
      pId.appendChild(mSpan);
      with(mSpan.style){
           left = mleft+"px";
           top = mtop+"px";
           background =bgcolor; 
       }
  }

 

二、隨機分布元素塊

為了方便理解,將其過程以趣味題的形式描述出來。

==========================================================
有96個方塊,每排放12塊,一共放8排,現在有六個顏色的油漆桶,每個油漆桶的顏色不同,

現在讓這六種顏色隨機塗抹這96個方塊,有一點要求是每種塗色方塊的總數是偶數  。

==========================================================
思路:

96塊和6種顏色     
96 - 6 =90 讓前90塊顏色隨機出現,並記錄每種顏色出現的總和
后6塊一塊一塊校正,根據當前顏色的總和,如果為奇數,讓其繼續加一,偶數時為方塊塗抹給后面將要出現的顏色值

                var arrColor = ["#FF00FF","#FFFF00","#00FFFF","#FF0000","#00FF00","#0000FF"];   //顏色值
                var myleft = 3;   // 初始的left值
                var mytop = 3;   // 初始的top值
                var arr = new Array();   // 將每一個span對象存放在二維數組中
                var test =  $("#test");   // 父容器
                var arrtmp =[0,0,0,0,0,0];  // 顏色計數器
                var tmpcolor =arrColor[0];  // 當前顏色

                for(var j=0;j<8;j++){
                    arr[j] = new Array();
                    if(j===7){
                        for(var i=0;i<12;i++){
                            if(i!==0){
                                myleft+=32;
                            }
                            if(i===6){
                                if(arrtmp[0]%2===0){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[1]);
                                    arrtmp[1]++;
                                }
                                else{
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[0]);
                                    arrtmp[0]++;
                                }
                            }
                            else if(i===7){
                                if(arrtmp[1]%2===0){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[2]);
                                    arrtmp[2]++;
                                }
                                else{
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[1]);
                                    arrtmp[1]++;
                                }
                            }
                            else if(i===8){
                                if(arrtmp[2]%2===0){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[3]);
                                    arrtmp[3]++;
                                }
                                else{
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[2]);
                                    arrtmp[2]++;
                                }
                            }
                            else if(i===9){
                                if(arrtmp[3]%2==0){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[4]);
                                    arrtmp[4]++;
                                }
                                else{
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[3]);
                                    arrtmp[3]++;
                                }
                            }
                            else if(i===10){
                                if(arrtmp[4]%2===0){
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[5]);
                                    arrtmp[5]++;
                                }
                                else{
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[4]);
                                    arrtmp[4]++;
                                }
                            }
                            else if(i===11){
                                if(arrtmp[5]%2===0){
                            
                                }
                                else{
                                    arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,arrColor[5]);
                                    arrtmp[5]++;
                                }
                            }
                            else{
                                tmpcolor=arrColor[parseInt(Math.random()*arrColor.length)];
                                if(tmpcolor===arrColor[0]){
                                    arrtmp[0]++;     
                                }
                                else if(tmpcolor===arrColor[1]){
                                    arrtmp[1]++;  
                                }
                                else if(tmpcolor===arrColor[2]){
                                    arrtmp[2]++;  
                                }
                                else if(tmpcolor===arrColor[3]){
                                    arrtmp[3]++;  
                                }
                                else if(tmpcolor===arrColor[4]){
                                    arrtmp[4]++;  
                                }
                                else if(tmpcolor===arrColor[5]){
                                    arrtmp[5]++;  
                                }
                                arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,tmpcolor);
                            }
                        }
                    }
                    else{
                        for(var i=0;i<12;i++){
                            if(i!==0){
                                myleft+=32;
                            }
                            
                            tmpcolor=arrColor[parseInt(Math.random()*arrColor.length)];
                            
                            if(tmpcolor===arrColor[0]){
                                arrtmp[0]++;     
                            }
                            else if(tmpcolor===arrColor[1]){
                                arrtmp[1]++;  
                            }
                            else if(tmpcolor===arrColor[2]){
                                arrtmp[2]++;  
                            }
                            else if(tmpcolor===arrColor[3]){
                                arrtmp[3]++;  
                            }
                            else if(tmpcolor===arrColor[4]){
                                arrtmp[4]++;  
                            }
                            else if(tmpcolor===arrColor[5]){
                                arrtmp[5]++;  
                            }
                            arr[j][i] = new creSpan((j+1)*(i+1),test,myleft,mytop,tmpcolor);
                        }
                    }
                  
                    mytop+=32;
                    myleft=3;
                }

 

三、事件綁定
相同顏色時,顏色塊消失。
不同顏色塊不消失。
兩次點擊同一個顏色塊時,不消失。

                var iclick = 0;  // 記錄狀態組click點擊的次數 
                var marr = new Array();  // 存儲顏色值
                var first = "";  // 記錄每次狀態組中的第一個span的當前數
                var second ="";  // 記錄每次狀態組中的第一個span的當前數
                $.each($("#test span"),function(k,v){
                    $(this).click(function(){
                        if(iclick===0){
                            $(this).addClass("del");
                            marr[0]=$(this).css("backgroundColor");
                            first=k;
                        }
                        if(iclick===1){
                            $(this).addClass("del");
                            marr[1]=$(this).css("backgroundColor");
                            second=k;
                        }
                        iclick++;
                        if(iclick>=2){
                            iclick=0;
                            if(first!=second){
                                if( marr[0]===marr[1]){
                                    $("#test").find(".del").detach();                     
                                }
                                else{
                                    $("#test span").removeClass("del");
                                }
                            }
                            else{
                                $("#test span").removeClass("del");
                            }
                        }
                    });
                });



演示實例:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM