js连连看
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" );
}
}
});
});
演示实例:
分类: javascript
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did48458