zoukankan      html  css  js  c++  java
  • javaScript

    Javascript

    Js简介(了解)

    1.js基于对象和事件驱动的脚本语言,作用在客户端(浏览器)上。

    2.js的特点

        * 交互性好。 人与服务器之间进行沟通。例子:注册的功能,输入特殊字符。浏览器直接给我提示。

        * 安全性       不可以直接访问本地的硬盘。

        * 跨平台性  浏览器就可以解析JS的文件。

    3.JavaScript和Java是不同(一点关系都没有)       雷锋与雷峰塔

        * js语言的历史:网景    牛X的公司   开发LiveScript动态效果。   微软巨头。开发 浏览器大战   撕X大战

        * LiveScript改名称JavaScript       微软开发的语言JScript      弹劾(SUN 微软   网景  ECMA欧洲计算机制造协会)

        * 标准:开发一套语言标签   ECMAScript标准。

        * 如果想开发js   底层遵循ECMAScript标准,然后在基础上进行扩展。

        * 如果JScript 底层遵循ECMAScript标准,然后在基础上进行扩展。

        * PHP

    4.js和Java的不同点(学习)

        * js基于对象,Java面向对象      

        * js解析就可以执行,Java先编译,再执行。

        * js是弱类型的语言,Java是强类型的语言。

    5.js语言的组成

        * ECMAScript标准          定义语法

        * BOM(浏览器对象模型)  代表整个浏览器(对象和API)

    * DOM(文档对象模型)       代表整个文档

    js需要和HTML结合到一起(使用)

    1.HTML用标签封装数据,CSS通过标签设置样式。js通过对象和语句来操作标签。

    2.js和HTML的结合(2种)

        *.HTML的文件提供了一个标签<script type="text/javascript">  js代码   </script>  

            特点:<script>标签可以放在页面的任意位置。

        *.引入外部文件的方式:<script type="text/javascript" src="引入JS的文件的地址" ></script> 

            注意:如果src的属性引入了外部的文件,在<script>标准中间定义js代码就不会执行。

        *.扩展的问题:

            特点:<script>标签可以放在页面的任意位置。

            一般情况下:不是必须的。建议。

            如果引入了外部的文件(外部文件没有直接操作HTML的标签,一般的情况下放在<head>中间)

            如果在本HTML文件上编写JS的代码,如果也没有直接操作HTML的标签,推荐放在</body>标签之后。

    js的语法

    JS的关键字 标示符 注释 js的基本数据类型

    1.关键字:用到哪个记住关键字

    2.标示符:在js和java是一样的。

    3.注释:       // 单行注释     /* 多行注释 */          /** 文档注释 */

    4.变量:声明变量。

        如果Java中:int a = 10; String str = "abc";

        如果是在js中声明变量的话:就使用一个关键字var

    5.js的数据类型

        5种基本数据类型:Undefined、Null、Boolean、Number 和 String

        * String        字符串

            在js中单引号和双引号都代表的是字符串 var str = "abc";    var str='abc';

        * Number        数字类型

            没有整数和小数之分。

        * Boolean       布尔类型

            和java一样的

        * Null      空,一般给引用赋值

        * Undefined 未定义(声明变量,没有赋值)

        js中声明变量使用   var

        typeof(变量)  :判断当前的变量是属于什么类型的

        js语言弱类型的语言,声明任意类型的变量,都可以进行赋值。

    js的运算符

    * 算术运算符

        alert(num / 1000 * 1000);   //3710

        数字类型不区分整数和小数

        * 字符串中间数字,做减法js默认字符串解析,再进行运算。

        alert("abc"-1);     // NaN:非法的数字    弹出NaN(非法的数字)

        * 0或者null代表是false,非0或者非null代表是true,默认用1来表示。

    * 比较运算符

        ==  :只比较值是否相等

        === :即比较值又类型是否相等

    * 赋值元素  逻辑运算符   三元运算符   和java是一样的

    js的数组(重要)

    1.var arrs = ["abc","cba",1,3];

    2.var arrs = new Array("abc","cba",..);

        var arrs = new Array(5);        声明数组,长度是5

        var arrs = new Array(5,6,7);    声明数组,元素是5,6,7

    3.java数组长度不可变,js的数组长度可变。

    js定义方法(函数)

    * js中编写方法,需要使用关键字   function声明方法。

    * java定义方法

        public String run(参数列表 int x,String y){

            ....

            return null;

        }

    * js中定义方法

        function 方法名称(参数列表(没有var的关键字) x,y){

            ... 方法体

            return 返回值; 如果方法有返回值,直接写返回值,如果没有返回值,return可以省略不写。如果没有返回值,而你接守了,则返回undefined

    }

    * js没有重载的方式

    * arguments数组存入传入进来的参数

    * 匿名函数:没有名称的函数。起个名称。

            xxxx.onclick = function(){

                // 执行

            }

    也可以引入外部文件

    <script language=”javascript” src=”js的路径”></script>

    js的全局和局部变量

    * js全局变量:定义在<script>标签中间的变量,都是全局变量。

        不仅可以在<script>标签中间使用,在其他的<script>标签也可以使用。

    * js局部变量:定义在方法内部的变量,是局部变量。

    //全局变量

    Var abc=89;

    Function test(){

             //在函数里,如果你不带var,则表示使用全局变量的abc变量。

             //如果你带上var 则表示 在test中,定义一个新的全局变量。

    }

    Js分配内存空间

    Js还提供一种方式,主动释放对象内存。

    Delete 对象名.属性名;//这样就会立即释放 对象这个属性空间

    js的对象和api

    this的作用

    注意事项:this不能放在类外不使用,否则就变成window对象

    Js的内部类

    Javascript中本身有提供一些,可以直接使用的类,这种类就是内部类,主要有:

    Object/Array/Marh/Boolean/String/RegExp/Date/Number

    内部类分类

    从使用的方式看,分为静态类与动态类

    静态类 使用 类名.属性|方法

    动态类 使用 var对象=new 动态类()对象.属性|方法

    比如:

      //显示当前日期

      Var nowdate=new Date();

      Window.alert(nowdate.toLocaleString());

    js的String对象

    两种声明字符串的方式:

        var str = "abc";    var str ='abc';

        var str = new String("abc");

    属性:length   -- 字符串长度。(截取字符串操作)

    方法:

        1)HTML标签相关方法

            bold()          把字符串显示粗体。

            fontcolor()     设置字体演示

            fontsize()      字体的大小

            italics()       斜体显示字符串

            link()          设置字符串为超链接

            small()         小字体

            sup()           上标显示字符串

        2)Java中String相关的方法

            charAt()                            返回指定位置的字符

            indexOf(searchvalue,fromindex)      检索字符串  

            lastIndexOf()                       从后向钱检索字符串

            replace()                           替换字符串

                       span(拆分标准)                             可以拆分成一个数组

            substring(start,stop)               截取字符串(包含开始,不包含结束)

            substr(start,length)                截取字符串(从哪开始,截取多长)(包含开始)

            toLowerCase()                       小写

            toUpperCase()                       大写

    js的Array对象

    var arr = [];

    var arr = new Array(5,6);

    属性:length   -- 数组的长度

    方法:

        concat(元素或者数组)

        join(分隔符)       把数组分隔字符串

        pop()           删除数组最后一个元素并且返回

        push(x)         向数组的末尾去添加一个元素

    js的Date对象

    Date对象

        * 获取当前的时间   var date = new Date();

    方法:

        toLocaleString()        根据本地时间格式,把date转换字符串

        toLocaleDateString()    只有日期

        toLocaleTimeString()    只有时间

        getTime()               获取1970-1-1号至今的毫秒数

        setTime(毫秒数)            // 通过毫秒数变成当前的时间

        parse(str)              静态方法,使用Date.parse();解析字符串,返回毫秒数

            // 2015-1-10 js中不能解析

            // 可以解析类型   2015,1,10   1/10/2015

    js的Math对象

    * 都是和数学相关的

    * 静态的方法 Math.xxx() 

        ceil(x)     对一个数进行上舍入

        floor(x)    对一个数进行下舍入

        round(x)    对一个数进行四舍五入

        random()    获取随机数   0-1之间小数

    js的RegExp对象

    * 作用:完成表单的校验。

    * 声明

        var reg = new RegExp(表达式);

        var reg = /表达式/;   

        特殊的写法:var reg = /^表达式$/;    (记住)

    * 方法

        exec(str)   :如果匹配成功,返回是匹配的结果   

        test(str)   :如果匹配成功,返回true,如果不成功,返回false    (记住)

    js的全局函数

    * 全局函数游离的状态,函数直接拿过来使用。

    eval()  解析字符串,可以执行字符串中的方法

    isNaN() 检测是否是非法的数字  如果是true代表是非法的数字

    下面这些方法都和编码和解码有关。

    想传输中文乱码的问题,先把中文编码(UTF-8),进行传输。再把内容进行解码。

    encodeURI()     编码

    decodeURI()     解码

    encodeURIComponent()    编码

    decodeURIComponent()    解码

    escape()        编码

    unescape()      解码

    BOM(浏览器对象模型)

    BOM:浏览器对象模型。

    BOM Window              -- 窗口对象(*****重点)

    BOM Navigator           -- 和浏览器版本相关的(**)

    BOM Screen              -- 和浏览器屏幕相关的(忘了吧)

    BOM History             -- 和浏览器历史相关的(**)

    BOM Location            -- 和浏览器地址栏相关的(***)

    BOM对象

    BOM Navigator           -- 和浏览器版本相关的(**)

    BOM Screen              -- 和浏览器屏幕相关的(忘了吧)

    BOM History             -- 和浏览器历史相关的(**)

        forward()   去下一页

        back()      去上一页

        go()        传入值,如果1等于forward()  如果传入-1代表是back()

    BOM Location        -- 和浏览器地址栏相关的(***)

        href        当前页面的地址的链接  获取和设置当前网页的地址

    window可以省略不写。

    BDOM对象window对象

    alert()                             弹出提示框

    confirm(显示的内容)                  弹出询问框,询问框上有两个按钮,一个是确定一个是取消。点击确定,默认返回true,点击取消,返回false

    setInterval("函数名称",毫秒数)     每隔多少毫秒就执行一次(执行n次)   默认返回id值

    setTimeout("函数名称",毫秒数)          到多少毫秒后执行一次(执行一次)    默认返回id值

    clearInterval(唯一的id值)           清除定时器

    clearTimeout(唯一的id值)                清除定时器

    open(url,name,features)             弹出一个新的窗口

    DOM 文档对象模型

    定义:document对象代表整个html文档,因此可以访问到文档中的各个对象。

    在document编程中,一个html文档会被当做document树对待,dom会把所有的html元素映射成note节点,于是就可以使用note节点的属性与方法。

    DOM的简介

    1.DOM:Document Object Model     文档对象模型

    2.文档:标记型文档(HTML XML)

    3.对象:有对象有方法或者属性。

    4.模型:抽象。共有的特性封装起来。

    5.DOM的作用:会把所有的文档的内容全部(元素、文本、属性)封装对象,方便操作。因为对象提供了方法和属性。

    6.DOM如果想操作标记型文档必须先进行解析。(解析器)

    7.DOM解析HTML的方式(重点):看图01.

    DOM的三个级别和DHTML介绍(了解)

    1.DOM的三个级别就是DOM发展的过程。

    2.DOM的二级别和三级别以后有机会看一下(偷偷的)。

    3.DHTML不是一门语言。

        * HTML       :使用标签封装数据(最基本一步)    <span style="">文本内容</span>

        * CSS               :设置网页的样式

        * JavaScript(BOM)   :提供的是程序的控制语句。         

        * DOM               :DOM提供了一些解析的对象。

    DOM提供对象和api

    Document对象

    * document:代表整个文档对象。

        方法:

            * getElementById("id的值");           获取是指定id值的元素对象。如果id值相同了,默认获取先加载的那个

            * getElementsByName("name名称")       获取是name名称相同的元素对象集合,

                                                    返回。也可以通过下标[0]或者循环遍历

            * getElementsByTagName("标签名称")  获取是通过标签名称的元素对象集合

            * write("文本内容")                 把文本的内容输出到客户端上

    动态添加子节点

                           

    // 点击添加的按钮,在ul的列表下面添加<li>深圳</li>

    // 生成子节点

    function run(){

        // 创建元素对象

        var li = document.createElement("li");

        // 创建文本

        var text = document.createTextNode("深圳");

        // 把文本添加到li下面

        li.appendChild(text);

        // 把li添加到ul的下面

        // 获取ul的节点

        var uls = document.getElementsByTagName("ul");

        var ul = uls[0];

        ul.appendChild(li);

    }

    总结:

        * 创建元素对象    document.createElement()

        * 窗口文本对象    document.createTextNode()

        * 添加子节点     appendChild()

    Element元素对象

    * 都是和操作属性相关的

        * setAttribute("属性名称","属性值");   设置或者修改属性的值

        * getAttribute("属性名称");         获取属性的值

        * removeAttribute("属性名称")       删除属性

    * 获取子节点(记住重点)

        * Element.getElementsByTagName("元素名称"); 获取元素下面所有子节点

    Node节点对象

    * Document Elment Text Attribute对象都属性Node节点对象。

    * Node对象的三个属性

        * nodeName      属性名称

        * nodeType       属性类型

        * nodeValue      属性值

                           元素对象                属性对象                文本对象

        nodeName            大写标签名称          属性名称                #text  

        nodeType            1                       2                            3

        nodeValue           null                     属性值               文本的内容

    * Node其他的属性(看图)

        parentNode      父节点(不能获取到空格)

        firstChild      第一个节点                   firstElementChild 第一个节点

        lastChild       最后一个节点、                 lastElementChild 最后一个节点

        nextSibling     下一同级节点                  nextElementSibling 下一同级节点

        previousSibling 上一同级节点                 previousElementSibling 上一同级节点

    NOde节点对象的方法

    * hasChildNodes()   判断是否包含子节点

        // 先判断ul是否包含子节点

        var ul = document.getElementById("ulId");

        // alert(ul.hasChildNodes());

    * hasAttributes()   判断是否包含属性

        // 判断是否包含属性

      alert(ul.hasAttributes());

    * appendChild(node)         默认向末尾去添加子节点

    * insertBefore(new,old)     在指定的节点之前添加子节点,new:创建新节点 old:在哪个节点之前添加

    案例

        // 在上海节点之前添加深圳子节点

        function run(){

            // 创建元素对象

            var li = document.createElement("li");

            // 创建文本

            var text = document.createTextNode("深圳");

            // 把文本添加到li下面

            li.appendChild(text);

            // 把li添加到ul的下面

            // 获取ul的节点

            /* var uls = document.getElementsByTagName("ul");

            var ul = uls[0]; */

            // 获取上海的节点

            var sh = document.getElementById("shId");

            var ul = sh.parentNode;

            ul.insertBefore(li,sh);

        }

    * removeChild(node)     删除节点,使用父节点去调用该方法。

        // 需求:点击上海,把上海的节点删除掉。

        document.getElementById("shId").onclick = function(){

            /* // 获取上海节点

            var sh = document.getElementById("shId");

            // 通过上海节点获取父节点

            var ul = sh.parentNode;

            // 调用删除节点的方法

            ul.removeChild(sh); */

            // 关键字  this:代表当前的对象    this代表的是上海li对象

            this.parentNode.removeChild(this);

        };

    * replaceChild(new,old)     替换节点,使用父节点调用该方法。

        // 需求:点击上,在使用DOTA节点来替换掉上海的节点

        document.getElementById("shId").onclick = function(){

            // 获取DOTA节点

            var dota = document.getElementById("dotaId");

            // this代表是上海

            this.parentNode.replaceChild(dota,this);

        };

    * cloneNode(boolean)    复制节点:如果参数设置true,复制子节点,如果false,不复制子节点。默认是false

        // 需求:复制button按钮的节点,添加到div标签的中间。

        function clone2(){

            // 获取按钮的节点

            var btn = document.getElementById("btnId");

            // 复制一个新的节点

            var newBtn = btn.cloneNode(true);

            // 获取div的节点对象

            var div = document.getElementById("divId");

            // 新节点添加到div下面作为子节点

            div.appendChild(newBtn);

        }

    innerHTML属性(重要)

    * 不是官方提供的标准,但是所有的浏览器都支持它。获取和设置标签的文本内容。

        // 如果不使用innerHTML属性,获取文本内容。 nodeValue如果文本对象,获取文本的内容。

        // 提供了innerHTML属性来获取文本内容

        // 获取span的标签对象

        /* var span = document.getElementById("spanId");

        // alert(span.innerHTML);

        span.innerHTML = "<font color='red'>我是张三</font>"; */

        /*

            onfocus :获取焦点

            onblur  :失去焦点

        */

        <span id="spanId">我是span区域</span><br/>

        <h4>获取和失去焦点的事件</h4>

        姓名:<input type="text" name="username" id="nameId" onfocus="run1()" onblur="run2()"/><span       id="uspan"></span><br/>

        密码:<input type="password" name="password" id="pwdId" /><span id="pspan"></span><br/>

        function run1(){

            // 操作uspan,动态设置提示的内容

            var uspan = document.getElementById("uspan");

            uspan.innerHTML = "不能输入特殊字符";

     }

        function run2(){

            // 异步请求 ajax

            var uspan = document.getElementById("uspan");

            uspan.innerHTML = "用户名以存在";

        }

    案例

    全选/全不选/反选

    下拉列表左右选择

    省市联动

    常用的事件

    **关于绑定事件的细节                 

    (1)       直接和某个html控件绑定 比如

    <input type=”button” value=”刷新页面”onclick=”test()”

    (2)       通过getElementById()获取元素后,在绑定监听

    <script type=”text/javascript”>

       Docution.getElementById(“but1”).onclick=test();

    </script>

    onclick             单击事件

    ondblclick          双击事件

    onload              加载事件:HTML文件加载完成后触发事件

    onfocus             获取焦点的事件

    onblur              失去焦点事件

    onmouseover         进入某个区域,停留在区域上,触发事件。

    onchange            改变事件

    onsubmit            控制表单的提交(表单的校验)

    onunload            卸载事件:关闭浏览器的时候,触发事件。

     仿搜狐动态切换效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    
    <link href="新建文件夹/souhu.css" rel="stylesheet" type="text/css" />
    <script language="javascript">
    <!--
    function change(val,obj)
    {
        obj.style.backgroundColor="#ffc12d";
        if(val=='zs')
        {
            
            zs.style.display='block';
            rz.style.display='none';
            
            }
        else if(val='rz')
        {
            zs.style.display='none';
            rz.style.display='block';
            
            
            
            }
        
        }
        function change2(obj)
        {
            obj.style.backgroundColor="silver";
            }
    
    -->
    </script>
    </head>
    
    <body>
    <div   class="div1">
    <div class="navi">
    <ul>
    <li onmouseover="change('zs',this)" onmouseout="change2(this)"> 招生</li>
    <li onmouseover="change('rz',this)"  onmouseout="change2(this)"> 热招</li>
    <li>出国</li>
    </ul>
     </div>
     <!--超链接-->
     <div  id="zs" class="zs"  >
     <ul>
        <li><a href="#">招生招生招生招生</a></li>
        <li><a href="#">招生招生招生招生</a></li>
        <li><a href="#">招生招生招生招生</a></li>
        <li><a href="#">招生招生招生招生</a></li>
        <li><a href="#">招生招生招生招生</a></li>
        <li><a href="#">招生招生招生招生</a></li>
        <li><a href="#">招生招生招生招生</a></li>
        <li><a href="#">招生招生招生招生</a></li>
     </ul>
     </div>
     <div  id="rz" class="rz">
     <ul>
        <li><a href="#">热招热招热招热招</a></li>
        <li><a href="#">热招热招热招热生</a></li>
        <li><a href="#">热招热招热招热招</a></li>
        <li><a href="#">热招热招热招热招</a></li>
        <li><a href="#">热招热招热招热招</a></li>
        <li><a href="#">热招热招热招热招</a></li>
        <li><a href="#">招生招生招生招生</a></li>
        <li><a href="#">招生招生招生招生</a></li>
     </ul>
     </div>
    </div>
    </body>
    </html>
    动态切换
       body{
        font-size:12px;
        }
       .div1{
           width:126px;
           height:160px;
           background-color:pink;
           }
       .navi{
           width:21px;
           height:160px;
         /*  background-color:silver;*/
           float:left;
           }
        .navi ul{
            padding:0px;
            margin-left:0px;
            margin-top:0px;
            float:left;
            }  
        .navi li{
            list-style-type:none;
            width:21px;
            height:50px;
            margin-top:2px;
            float:left;
            text-align:center;
            background-color:silver;
            
        
            }
        .zs,.rz{
            width:100px;
            height:160px;
            float:left;
            
            
        }
         .zs ul,.rz ul{
             padding:0px;
             margin-left:0px;
              margin-top:0px;
            float:left;
            }
          .zs ul li,.rz ul li{
              list-style-type:none;
             
              line-height:20px;
              
            }
        .rz
            {
                display:none;
                
                }
    样式
  • 相关阅读:
    Vue-如何实现响应式
    Docker中mysql容器时区问题
    Django格式化日期时,抛出异常ValueError: embedded null byte
    前端报被CORS策略阻止,Django开启跨域解决
    DRF框架之认证、授权和登录
    Django之ALLOWED_HOSTS、LOGGING和多个子应用管理
    DRF框架生成接口文档
    DRF框架之自定义action
    DRF框架之视图集、Routers路由
    DRF框架之Concrete Generic Views
  • 原文地址:https://www.cnblogs.com/lulu638/p/4220020.html
Copyright © 2011-2022 走看看