zoukankan      html  css  js  c++  java
  • javaScript学习

            由于最近很闲,都不知道干啥,随便看了一本书-javaScript从入门到精通!每当看到某某书有”精通“两个字,我都very好奇的,无不对时刻对作者投以钦佩之情,总在想要是我偷偷看了的话,是不是也非常非常厉害了的,是不是也能炉火纯青,登峰造极,是不是也能....等等等等.但是我又好害怕的,因为第一篇随笔呀,怕别人看了都不关注我,我又少了好多粉丝呢,而且都说博客写的不好的长得丑呢,怎么办才好呢!坐立不安啊..................


    因为javaScript是在浏览器里解释执行的,为了早日能看到修炼成果,我不得不去偷学其他的东西了了不容易啊!清晰的记得有一天我不小心点到了网页源码,为此我精简如下:

    <html>
     <head>
            <style type="text/css">
                    selector {property: value}
            </style>
            <script language="javascript">
                    function name(){}
            </script>
     </head>    
     <body>
        hello...world
     </body>
    </html>

    还有如下口诀:

    HTML:

        超文本标记语言(HyperText Markup Language)html元素由很多成对的标签构成,标签有各种莫名其妙的属性!其实,碰到这种敌人我只能先翻下书;

    CSS:

      指层叠样式表(Cascading Style Sheets) 是能够真正做到网页表现与内容分离的一种样式设计语言,样式定义如何显示 HTML 元素 样式通常存储在样式表中 要是没这的话,估计复杂的好看页面会死人的;

    Dom:

          文档对象模型 (Document Object Model)  在应用程序中,基于Dom的Html分析器将html文档转换成一个对象模型的集合(通常称作是Dom树),一个html分析器,在对html文档分析后,不管这个文档有多简单或复杂,其中的消息都会被转化成一颗对象树 ,通过Dom接口,应用程序可以在任何时候访问Html文档的任何一部分数据,因此利用Dom接口的机制也可以被称为随机访问机制。Dom接口提供了一种通过分层对象模型来访问html文档的信息的方式,这些分层对象模型依据html文档结构形成了一个节点树。

          DOM的设计是以对象管理组织(OMG)的规约为基础的,因此可以用于任何编程语言;要改变页面的某个东西,JavaScript 就需要获得对 HTML 文档中所有元素进行访问的入口。这个入口,连同对 HTML 元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)。

    JavaScript:

      是一种原型化继承,面向对象的,动态类型的客户端脚本语言。是因特网上最流行的脚本语言 ,主要目的是为了解决服务器端语言,比如:Perl遗留的速度问题,为客户端提供更流畅的浏览效果::有 利于页面显示和行为的分离,浏览器事件作出响应 浏览器事件作出响应;

      ------是一种解释性脚本语言(代码不进行预编译)

      什么是解释性呢,呢呢,??????如下:

        编译器翻译的方式有两种:一个是编译,一个是解释。两种方式之间的区别在于翻译时间点的不同。

          编译型程序执行速度快,同等条件下对系统要求较低;解释型边解释边运行,,效率相对比较低但是不同系统平台间的兼容性较好。

      它的基本特点如下:

        嵌入动态文本于HTML页面;

        对浏览器事件作出响应 ;

        读写HTML元素 ;

        在数据被提交到服务器之前验证数据;

        检测访客的浏览器信息,控制cookies,包括创建和修改等;

    额,我都觉得我很啰嗦了!


    0 . 整体

    前面我们看到了这个<script>..</script>那这个东西什么作用来的啊?我又千辛万苦百度了下,发现如下:

    <script> 标签用于定义客户端脚本,比如 JavaScript。

    script 元素既可以包含脚本语句,也可以通过 src 属性指向外部脚本文件(如:js文件的地址URI)

    必需的 type 属性规定脚本的 MIME 类型。例如:type="text/javascript");

    这时我又在想,在页面这个关系复杂的地方,它是何时何地执行的呢?

    head标签是前于body标签处理的,在head标签的所有文件加载完前是没法进行body内容的展示,且Javascript在页面装载时执行的顺序就是其引入标记<script />的出现顺序, 请看下:

    <html>
     <head>
     <script language="javascript">
            alert("one");
     </script>
     </head>
     <body onload="alert('three')" >
          <script language="javascript">
            alert("two");
          </script>
     </body>
    </html>
    
    //one   two  three

    知道了它从哪里开始了,那么着既然是一门语言,那又有和其它语言有什么不同呢?(都说了时解释性的了,啰嗦!)

    1. 变量:

      不像其他语言有固定的数据类型,int,float,javaScript变量可以存放任何类型的值, 内部快速自动的进行两种不同的类型的转换;(特么神奇啊,是吧?是啊!),也有两个烦人的类型,null,undefined,

    如果没有声明,默认为undefined,如果声明了,但是没赋值,就是null,不知道是不是这个样子的呢?算了,为了加快速度,我闪了!但为了回忆还是留下点啥!如下:

    <html>
     <head>
            <script language="javascript">
    
                function  cmp(){
    
                    alert(null===undefined); //false;
                    alert(typeof null);  //Object
                    alert(typeof undefined)  //undefined
                }
    
                cmp();
            </script>
            <script language="javascript">
                alert(tmp);   //输出 undefined
                var   tmp = 1;  
                alert(tmp);  // 1
            //也说明是边解释边执行哦
    var i,j; i=5;j=7; alert(""+i+j); //57 alert(""+(i+j)); //12; alert(j/i);//1.4 alert(Math.floor(j/i)); //1 </script> </head> <body> hello..木有..world </body> </html>

    对于上面,你也会发现:var ={int  ,bool  ,float,Object,String,undefined,null......}各种数据类型的集合,Ps:对象是一种构造数据类型;

    2 . 语法:

      好歹我先前也练了乾坤大挪移,什么语法的小菜了,(不过也有她自身的独特语法,,whih,,in,,等,)

      函数:function name(){......}     、、呵呵很简单了

      还有其他两个函数有必要说出来,这样我们才可以看到我们程序的结果了:document.write("hello");   alert(“提示什么结果不”);请看:

     <html>
       <head>
           <script language="javascript">
                  function find( ){
                      document.write("hello");    
                      //会清除原有的内容!
              //        document.getElementById("id").value="不好";
                      //没有注释的话,报错,无法设置属性value,对象为空或未定义,
                  }
      //            find();
           </script>
       </head>
      
       <body>dfd
              <input  type="button"  onclick="find()">
              <input  type="text" id="id" name="id" value="你好吗?">
     
       </body>
      </html>  看到结果后,会惊奇的发现,因为document.write()把页面原来存在标签按钮的覆盖了,为什么啊?尼玛,赶速度啊,先这样吧!于是你也会惊奇不,看到了吧,可以有事件哎!
    因为如此,才增加了它的可练性啊,因为有了互动么!


    3.事件:
      简单理解,事件机制是一种触发机制,要想客户端的javaScript程序有 机会呗激活并运行,就必须有一个触发的事件;(好比老鼠夹子,嘻嘻);
      如何绑定呢:
    ------1.绑定到元素属性:即标签中的属性,属性名由事件属性有一个“on”前缀+事件类型;如:onClick OnMouseOver 这些属性也被称为事件处理器:

       ------2.绑定到对象属性: Dom节点中的对象属性, document.getElementById("myButton").onclick=myFunction;
    <html>
       <head>
           <script language="javascript">
                    var i=0;
                  function find( ){
                        document.getElementById("myButton").onclick=find;
                      alert(i);
                        i++;
                  }
           </script>
       </head>
      
       <body>
              <input  type="button"  value="先点元素"onclick="find()">
                <input  type="button"  value="后点对象" id="myButton">
       </body>
      </html>
            //结果为 alert(0),alert(1),

    不写了,再写的话,本来很好的别人也会差评的呢,。但是既然学了那么多,还是留下个数字拼图游戏吧:如下:很好玩的哦,不信算了。。
      截图炫耀:(其实你不用羡慕了)

    <html>
     <head>
      <title> five </title>
    <style type="text/css">
        td input {
              background-color: #00ff00 padding: 0px;
              padding-top: 0px;
              padding-right: 0px;
              padding-bottom:0px;
              padding-left: 0px;
              width: 100px;
              height: 100px;
              font-size: 80px;
        }
    </style>
    <script language="javascript">
    
        var hasvalue = new array(5);
            for(i=0;i<=4;i++)
                hasvalue[i]=new array(5);    
        var s=0,m=0,t;
        function timecount(){
            s++;
            if (s<10) 
              s="0" + s;
            else if(s>59){
              s-=60;
              m++;
              }
            document.getelementbyid('time').value=m+":"+s; 
            t=settimeout("timecount()",1000)
            
        }
        function reducerandom(){
            s=m=0;
            timecount();
            //为何不是递归呢????一直在此循环??
            var isok  = new array(8);
            var i,num ;
            var t=0;
            for(i=0;i<=8;i++) 
                isok[i]=false;
    
            for(i=0;i<=4;i++)
                for(j=0;j<=4;j++)
                    hasvalue[i][j]=1;                    
            hasvalue[3][3]=0;
    
            while(1){
                num = math.floor(math.random()*8+1) ;
                if(isok[num])
                    continue;
                isok[num]=true;
                t++;
                document.getelementbyid(""+t).value=num;
                if(t==8)
                    break;    
            }    
            document.getelementbyid("9").value="";
        }
    
        
    
        function exchange(button){
            var i , j;
            if(button.value=="")
                return;
            if(button.value!=""){
                i=math.floor((button.id-1)/3+1);
                if(button.id%3==0)  j=3;
                else      j=button.id%3;
                hasvalue[i][j]=0;
                if(hasvalue[i-1][j]==0) {    hasvalue[i-1][j]=1;document.getelementbyid(""+((i-2)*3+j)).value=button.value ;button.value="";     }
                else if(hasvalue[i+1][j]==0) {     hasvalue[i+1][j]=1;document.getelementbyid(""+(i*3+j)).value=button.value ;button.value=""; }
                else if(hasvalue[i][j-1]==0) { hasvalue[i][j-1]=1;document.getelementbyid(""+((i-1)*3+j-1)).value=button.value;button.value=""; }
                else if(hasvalue[i][j+1]==0) {    hasvalue[i][j+1]=1;document.getelementbyid(""+((i-1)*3+j+1)).value=button.value;button.value="";     }
                else  hasvalue[i][j]=1;
                if(checkover())
                    {
                        alert("congratulation!!");
                        cleartimeout(t);    
                    }
            }        
        }
        function checkover(){
            var i;
            var target;
            for(i=1;i<=8;i++){
                target=document.getelementbyid(""+i);
                if(target.id!=target.value)    
                    return false;
            }
            return true;
        }
    
    </script>
    
     </head>
    
     <body>
    <br>
    <center>
    <input type="button" style="color:#ff0000;" value="开始游戏" onclick="reducerandom()">
    <input type="text"  id="time" style="color:#ff0000;" >
    </center>
    <br><h4 align="center" style="color:#ff66cc;">author:five</h4> 
    <hr>
            <table align="center" border="0" width="10%" >
                <tr>
                        <td><input type="button"  id="1" onclick="exchange(this)"></td>
                        <td><input type="button" id="2" onclick="exchange(this)"></td>
                        <td><input type="button" id="3"  onclick="exchange(this)"></td>
                </tr>
                <tr>
                        <td><input type="button" id="4"  onclick="exchange(this)"></td>
                        <td><input type="button" id="5" onclick="exchange(this)"></td>
                        <td><input type="button" id="6"  onclick="exchange(this)"></td>
                </tr>
                <tr>
                        <td><input type="button" id="7"  onclick="exchange(this)"></td>
                        <td><input type="button" id="8"  onclick="exchange(this)" ></td>
                        <td><input type="button" id="9"  onclick="exchange(this)" ></td>
                </tr>
            </table>
     </body>
    </html>
    View Code
    好了,累死我了;
    不会排版,丑死了!
    2013-10-22 21:57:57,
  • 相关阅读:
    iOS 验证码按钮倒计时
    简单三层复习
    文件读写,改进版
    第一个文件读写的例子
    文件读写原理
    Ajax原理
    MVC,布局页面
    在MVC视图的代码块中,直接输出文本,有几种方式?
    MVC,如何在视图中声明方法,调用方法?
    MVC怎么在当前视图中,传递参数给到另外一个视图?
  • 原文地址:https://www.cnblogs.com/foreverzd/p/3383223.html
Copyright © 2011-2022 走看看