学习笔记.JavaScript应用程序(三)

1.函数传值&探测对象

window.onload = initAll;
/*
function initAll(){
    for(i=0;i<24;i++){
        var newNum = Math.floor(Math.random()*75) + 1;
        document.getElementById("square" + i).innerHTML = newNum;
    }
}
*/
function initAll(){
    if(document.getElementById){     //通过此属性检测是否支持JavaScript
        for(i=0;i<24;i++){
            setSquare(i);
        }
    }
    else{
        alert("Sorry,your browser doesn‘t support this script.")
    }
}
function setSquare(thisSquare){
    var newNum = Math.floor(Math.random() * 75) +1;
    document.getElementById("square" + thisSquare).innerHTML = newNum;
}

2.处理数组

var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
function initAll(){
    if(document.getElementById){
        for(i=0;i<24;i++){
            setSquare(i);
        }
    }
    else{
        alert("Sorry,your browser doesn‘t support this scirpt.")
    }
}
function setSquare(thisSquare){
    var currSquare = "square" + thisSquare;
    var newNum = Math.floor(Math.random() * 15) + 1 + colPlace[thisSquare] * 15;
    document.getElementById(currSquare).innerHTML = newNum;
}

数组定义的位置要么是全局,要么在setSquare()函数内。

3.do/while循环

var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4);
var usedNums = new Array(76);
function initAll(){
    if(document.getElementById){
        for(i=0;i<24;i++){
            setSquare(i);
        }
    }
    else{
        alert("Sorry,your browser doesn‘t support this scirpt.")
    }
}
function setSquare(thisSquare){
    var currSquare = "square" + thisSquare;
    var newNum;
    do{
        newNum = Math.floor(Math.random() * 15) + 1 + colPlace[thisSquare] * 15;
    }while(usedNums[newNum]);
    usedNums[newNum] = true;
    document.getElementById(currSquare).innerHTML = newNum;
}

注意循环条件usedNums[newNum]为假时结束循环。

4.使用javascript动态调整css。

function setSquare(thisSquare){
    var currSquare = "square" + thisSquare;
    var newNum;
    do{
        newNum = Math.floor(Math.random() * 15) + 1 + colPlace[thisSquare] * 15;
    }while(usedNums[newNum]);
    usedNums[newNum] = true;
    document.getElementById(currSquare).innerHTML = newNum;
    document.getElementById(currSquare).className = "";
    document.getElementById(currSquare).onmousedown = toggleColor;
}
function anotherCard(){
    for(i=1;i<usedNums.length;i++){
        usedNums[i] = false;
    }
    newCard();
    return false;
}
function toggleColor(evt){
    if(evt){
        var thisSquare = evt.target;
        //alert(evt.target);   //返回object HTMLTableCellElement
        //alert(evt.type);     //返回mousedown
    }
    else{
        var thisSquare = window.event.srcElement;
    }
    if(thisSquare.className == ""){
        thisSquare.className = "pickedBG";
    }
    else{
        thisSquare.className = "";
    }
}

5.检查状态。

function checkWin(){
    var winners = new Array(31,992,15360,507904,541729,557328,1083458,2162820,4329736,8519745,8659472,16252928);
    var setSquares = 0;
    var winnerOption = -1;
    //alert(winners[-1]);
    for(i=0;i<24;i++){
        var currSquare = "square" + i;
        if(document.getElementById(currSquare).className != ""){
            document.getElementById(currSquare).className = "pickedBG";    //当闪烁的行被点击取消一格后,使得本行剩余的方格取消闪烁。
            setSquares = setSquares | Math.pow(2,i);        //通过或运算选中点击的方格,即24位二进制中把选中的位置置1。
            //alert(setSquares);
        }
    }
    for(i=0;i<winners.length;i++){
        if((setSquares & winners[i]) == winners[i]){        //通过与运算匹配取胜的结果。
            winnerOption = i;
            //alert(winnerOption);
        }
    }
    if(winnerOption>-1){
        for(i=0;i<24;i++){
            if(winners[winnerOption] & Math.pow(2,i)){        //通过与运算匹配选中的格子
                currSquare = "square" + i;
                document.getElementById(currSquare).className = "winningBG";
            }
        }
    }
}
时间: 2024-10-13 20:57:00

学习笔记.JavaScript应用程序(三)的相关文章

马程序员学习笔记——红黑树解析三

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 六.树的前序.中序.后序 前序遍历(根左右): 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历(左根右): 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序遍历(左右根): 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点 扩展:已知前序.中序遍历,求后序遍历? 例: 前序遍历: GDAFEMHZ 中序遍历:

【Android开发学习笔记】【第三课】Activity和Intent

首先来看一个Activity当中启动另一个Activity,直接上代码说吧: (1)首先要多个Activity,那么首先在res-layout下新建一个 Other.xml,用来充当第二个Activity的布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

Accelerated C++学习笔记5—&lt;组织程序和数据&gt;

第4章  组织程序和数据 从前面的学习中,我们可以发现程序并不是我们所想的那么简短,他们都有一个共同的特性,那就是 1)都能解决某些特定类型的问题 2)与其他的大多数工具都互相独立 3)都具有一个自己的名称 C++中提供两种基本的方法来让我们组织大型的程序,函数(子程序)和数据结构. 1.组织计算 1)计算总成绩 子函数grade <span style="font-family:KaiTi_GB2312;">//根据学生的期中考试.期末考试.家庭作业成绩来计算总成绩 do

iOS学习笔记---oc语言第三天

继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量也继承过来了,只是不能访问) 面向对象提供了继承语法.能大大简化代码,把公共的方法和实例对象写在父类里.子类只需要写自己独有的实例变量和方法即可 继承既能保证类的完整,又能简化代码 继承特点 oc中只允许单继承 没有父类的类称为根类,oc中得根类是NSObject(祖宗) 继承的内容:所有的实例变量

学习笔记---Javascript事件Event、IE浏览器下的拖拽效果

学习笔记---Javascript事件Event.IE浏览器下的拖拽效果     1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcElement(触发事件的事件源对象)和attachEvent("onclick",function(){...}); 2. a. 实现拖放(Drag and Drop): 目前支支持IE, 若定制某对象为可拖放对象, 则必须覆盖目标对象的dragenter和dragover事件, 可以用e

Hibernate学习笔记:第一个程序的搭建

Hibernate学习笔记:第一个程序的搭建 前一段时间对Struts2这个框架有了一点点地了解,很高兴,自己开始学习Hibernate这个框架了.本篇博文将记录下第一个Hibernate程序的搭建过程.其实有时候个人觉得无论我们学习什么语言也好,还是学习什么框架也好,第一个HelloWorld程序真的相当重要,假如 我们在学习第一个HelloWorld程序都跑不出来,这完全影响着我们对新接触的东西的兴趣和动力,但是,往往第一个程序都会涉及到很多的配置,因此使得对于初学者要摸索一定的时间,对于我

springmvc学习笔记(5)-入门程序小结

springmvc学习笔记(5)-入门程序小结 springmvc学习笔记5-入门程序小结 入门程序配置小结 非注解的完整的配置文件 注解的完整配置文件 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法.并附上入门程序的非注解的完整的配置文件,注解的完整配置文件. 入门程序配置小结 前端控制器配置: 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServl

capwap学习笔记&mdash;&mdash;初识capwap(三)

2.5.6 CAPWAP状态机详解 2.5.6.1 Start to Idle 这个状态变迁发生在设备初始化完成. ¢  WTP: 开启CAPWAP状态机. ¢  AC:  开启CAPWAP状态机. 2.5.6.2 Idle to Discovery 这个状态变迁发生是为了支持CAPWAP发现进程. ¢   WTP: WTP进入发现状态是为了优先去传输第一个Discovery Request message.在进入这个状态之前,WTP设置发现DiscoveryInterval timer,将Di

多线程编程学习笔记——线程同步(三)

接上文 多线程编程学习笔记——线程同步(一) 接上文 多线程编程学习笔记——线程同步(二) 七.使用Barrier类 Barrier类用于组织多个线程及时在某个时刻会面,其提供一个回调函数,每次线程调用了SignalAndWait方法后该回调函数就会被执行. 1.代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; //