JavaScript

1、js的简介

   (1)js是什么?

    js是可以嵌入到html中,是基于对象和事件驱动的脚本语言。

         特点:

      交互性

            安全性:js不能访问本地磁盘

      跨平台:浏览器中都具备js解析器

      (2)js能做什么

    js能动态的修改(增删)html和css的代码

    能动态的校验数据

      (3)js的历史及组成

    BOM(浏览器对象模型)DOM(文档对象模型)

      (4)js被引入的方式

    内嵌脚本

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <input type = "button" value = "button" onclick="alert('xxx')">
</body>
</html>

 

    内部脚本

<script type="text/javascript">
    alert("xxx");
</script>

    外部脚本

      首先创建一个js文件

            其次在html中引入

<script type="text/javascript" src = "demo1.js"></script>

        js的代码放在哪?

        放在哪都行 但是在不影响html功能的前提下,越晚加载越好。

2、js的基本语法:

  (1)变量

       方法1:

       var x = 5;

       x = 'javascript';

          var y = "hello";

       var b = true;

      方法2:

       x = 5;

  (2)原始数据类型

       number:数字类型

       string:字符类型

       boolean:布尔

       null:空类型

       underfind:未定义 

    注意:number、boolean、string是伪对象

    类型转换:

      numberoolean转成string:

        toString();

      stringoolean转成number

        parseInt()

        parseFloat()

        boolean不能转

              string可以将数字字符串转换成number

           强制转换

        Boolean()  强制转换成布尔

           数字强制转成成布尔 非零就是true 零就是false

              字符串强转成布尔 非""就是true

        Number() 强制转换成数字

             布尔转数字 true转成1  false转成0

           字符串转数字 不能强制转换

  (3)引用数据类型

    java:Object obj = new Object();

    js:var obj = new Object();

       var num = new Number();

  (4)运算符

    赋值运算符

      var x = 5;

    算数运算符

      + - * %

      + : 遇到字符串变成连接

            - : 先把字符串转成数字然后进行运算

    逻辑运算符

      &&  || 

    比较运算符

      >  <  >= !=  ==

      === : 全等:类型和值都要相等

    三元运算符

      3 < 2?"大于":"小于"

    void运算符

<a href="javascript:void(0);">xxx</a>

    类型运算符

      typeof : 判断数据的类型(返回数据的类型)

      instanceof : 判断数据类型(判断是否是某种类型)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    var obj = new Object();
    alert(typeof obj);
    alert(obj instanceof Object);
</script>

</head>
<body>
    
</body>
</html>

    返回:Object true

  (5)逻辑语句

    (1)if-else

    (2)switch

    (3)for

    (4)for in 

3、js的内置对象

    (1)Number

      创建方式:

        var myNum = new Number(value);

        var myNum = Number(value);

        属性和方法:

        toString():转成字符串

        valueOf():返回一个Number对象的基本数字值

    (2)Boolean

       创建方式:

        var bool = new Boolean(value);

        var bool = Boolean(value);

      属性和方法:

        toString():转成字符串

       valueOf():返回一个Boolean对象的基本值

    (3)String

       创建方式:

        var str = new String(s);

        var str = String(s);

      属性和方法:

        length:字符串的长度

        charAt() : 返回索引字符

        indexOf() : 返回字符索引

        lastIndexOf() : 逆向返回字符的索引

        split() : 将字符串按照特殊字符切割成数组

        substr() : 从起始索引号读取字符串中指定数目的字符

        substring();  提取字符串中两个指定的索引号之间的字符

        toUpperCase() : 转大写

    (4)Array

           创建方式:

        

         属性和方法:

        length : 数组的长度。

           join() : 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

              pop() : 删除并返回最后一个元素。

        push() : 向数组的末尾添加一个或多个元素,并返回新的长度

        reverse() : 反转数组

        sort():排序

    (5)Date

          创建方式:

          var myDate = new Date();

          var myDate = new Date(毫米值); //代表从1970-1-1到现在的一个毫秒值

        属性和方法:

          getFullYear() : 年

          getMonth() : 月 0 -11

          getDate() : 日 1-31

          getDay() :  星期 0 - 6

          getTime() : 代表从1970-1-1到指定日期(字符串)的一个毫秒数

          toLocaleString() : 获得本地时间格式的字符串

    (6)Math        

          属性和方法:

         PI : 圆周率

         abs() : 绝对值

            ceil() : 对数进行上舍入

         floor() : 对数进行向下舍入

         round() : 四舍五入

            pow(x,y) : 返回x的y次幂        

    (7)RegExp

        创建方式:

          var reg = new RegExp(pattern);

          var reg = /^正则规则$/;

        规则的写法:

        [0-9]

        [A-Z]

        [a-z]

        [A-z]

          d 代表数字

        D 代表非数字

        w 查找代表字母

          W 查找非单词字符

        s  查找空白字符

        S 查找非空白字符 

        n+ 出现至少一次         

        n* 出现0次获多次

        n? 出现0次或1次

        {5} 出现5次

        {2-8} 2到8次

      方法:

        test(str):检索字符串中指定的值。返回true或false

      需求:

        校验邮箱:

        var email = "haohao_827@163.com";

        var reg = /^[A-z]+[A-z0-9_-]*@[A-z0-9]+.[A-z]+$/;

        reg.test(email);

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    var email = "haohao_827@163.com";
    var reg = /^[A-z]+[A-z0-9_-]*@[A-z0-9]+.[A-z]+$/;
    alert(reg.test(email));
</script>

</head>
<body>
    
</body>
</html>

   返回:true

4、js的函数

   (1)js函数定义的方式

    普通方式

      语法:function 函数名(参数列表){函数体}

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    function method(){
        alert("xxx");
    }
    method();
</script>

</head>
<body>    
    
</body>
</html>

    匿名函数:

      语法:function(参数列表){函数体}

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    var method = function(){
        alert("yyy");
    };
    method();
</script>

</head>
<body>    
    
</body>
</html>

    对象函数

    语法:new Function(参数列表,函数体)

    注意:参数名称必须使用字符串形式、最后一个默认是函数体且函数体需要字符串形式

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    var fn = new Function("a","b","alert(a+b)");
    fn(2,5);
</script>

</head>
<body>    
    
</body>
</html>

  函数的参数:

   (1)形参没有var去修饰

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    function fn(a,b,c){
        var sum = a + b + c;
        alert(sum);
    }
    fn(1,2,3);
</script>

</head>
<body>    
    
</body>
</html>

  输出:7

  (2)形参和实参的个数不一定一致

  返回值:

    (1)在定义函数的时候不必表明是否具有返回值。

    (2)返回值仅仅通过return关键字就可以了 return后的代码不执行。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    function fn(a,b){
        return a + b;
    }
    alert(fn(2,3));
</script>

</head>
<body>    
    
</body>
</html>

输出结果为:5

    * js的全局函数

      (1)编码和解码

        encodeURI()  decodeURI()

        encodeURICompoent()  decodeURICompoent()

        escape() unescape()

        三者区别:

          进行编码的符号范围不同,实际开发中常使用第一种

      (2)强制转换

        Number()

        String()

        Boolean()

      (3)转成数字

         parseInt()

         parseFloat()

      (4)eval()方法

        将字符串当作脚本解析运行

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    var str = "var a = 2;var b = 3;alert(a+b)";
    eval(str);
</script>

</head>
<body>    
    
</body>
</html>

输出5

五、js的事件

  1、 js的常用事件

        onclick : 点击事件

      onchange : 域内容被改变的事件

        需求:实现二级联动

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>            
    <select id = "city">
        <option value = "bj">北京</option>
        <option value = "tj">天津</option>
        <option value = "sh">上海</option>
    </select>
    <select id = "area">
        <option>海淀</option>
        <option>朝阳</option>
        <option>东城</option>
    </select>
</body>

<script type="text/javascript">

    var select = document.getElementById("city");
    
    select.onchange = function(){
         var optionVal = select.value;
          switch(optionVal){
            case "bj":
                var area = document.getElementById("area");
                area.innerHTML = "<option>海淀</option><option>朝阳</option><option>东城</option>";
                break;
            case "tj":
                var area = document.getElementById("area");
                area.innerHTML = "<option>南开</option><option>西青</option><option>河西</option>";
                break;
             case "sh":
                var area = document.getElementById("area");
                area.innerHTML = "<option>浦东</option><option>浦西</option><option>杨浦</option>";
                break;
            default:
                alert("error"); 
        }  
    }
    
</script>

</html>

        onfoucus :获得焦点的事件

        onblur : 失去焦点的事件

        需求:当输入框获得焦点的时候,提示输入的内容格式

             当输入框输入焦点的时候,提示输入有误

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>    
    <label for = "txt">name</label>
    <input id = "txt" type = "text"/><span id = "action"></span>
</body>

<script type="text/javascript">
    var txt = document.getElementById("txt");
    txt.onfocus = function(){
        //友好提示
        var span = document.getElementById("action");
        span.innerHTML = "用户名格式最小8位";
        span.style.color = "green";
    };
    txt.onblur = function(){
        //错误提示
        var span = document.getElementById("action");
        span.innerHTML = "对不起,格式不正确";
        span.style.color = "red";
    } 
</script>

</html>

  

      onmouseover :鼠标悬浮的事件

        onmouseout : 鼠标离开的事件

        需求:div元素 鼠标移入变为绿色 移出回复原色

      

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<style type = "text/css">
    #d1{
        background-color : red;
        width:200px;
        height:200px;
    }
</style>

</head>
<body>            
    <div id = "d1"></div>
</body>

<script type="text/javascript">
    var div = document.getElementById("d1");
    div.onmouseover = function(){
        this.style.backgroundColor = "green";
    }
    div.onmouseout = function(){
        this.style.backgroundColor = "red";
    }
</script>

</html>

      onload : 加载完毕的事件

      等到页面加载完毕再执行onload事件所指向的函数

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    window.onload = function()
    {
        var span = document.getElementById("span");
        span.innerHTML = "hello js"
    };
</script>

</head>
<body>            
    <span id = "span"></span>
</body>



</html>

  2、事件的绑定方式

    (1)将事件和响应行为都内嵌到html标签中

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>    
    <input type = "button" value = "button" onclick = "alert('xxx')">
</body>

<script type="text/javascript">
    
</script>

</html>

当点击按钮的时候会弹出xxx

    (2)将事件内嵌到html中而响应行为用函数进行封装

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>    
    <input type = "button" value = "button" onclick = "fn()">
</body>

<script type="text/javascript">
    function fn(){
        alert("yyy");
    }
</script>

</html>

    (3)将事件和响应行为与html标签完全分离

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>    
    <input id = "btn"type = "button" value = "button">
</body>

<script type="text/javascript">
    var btn = document.getElementById("btn");
    btn.onclick = function(){
        alert("zzz");
    }
</script>

</html>

    this关键字

    this经过事件的函数进行传递的是html标签对象

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>    
    <input type = "button" name = "mybtn" value = "button123" onclick = "fn(this)">
</body>

<script type="text/javascript">
    function fn(obj){
        alert(obj.name);
    }
</script>

</html>

  3、阻止事件的默认行为 

     IE:window.event.returnValue = false;

    W3c : 传递过来的事件对象.preventDefault();

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>            
    <a href = "http://www.baidu.com" onclick = "fn(event)">点击我吧</a>
</body>

<script type="text/javascript">
    function fn(e){
        //IE window.event.returnValue = false;
        //w3c 传递过来的事件对象.preventDefault();
        //w3c标准
        if(e&&e.preventDefault){
            alert("w3c");
            e.preventDefault();
        //IE标准
        }else{
            alert("ie");
            window.event.returnValue = false;
        }
    }
</script>

</html>

  4、阻止事件的传播 

    IE:window.event.cancelBubble = true;

    W3c : 传递过来的事件对象.stopPropagation();

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>            
    <div onclick = "fn1(event)" style = "100px;height:100px;background-color:green;padding:50px">
        <div onclick = "fn2(event)" style = "100px;height:100px;background-color:red;">xxx</div>
    </div>
</body>

<script type="text/javascript">
    function fn1(e){
        alert("fn1");
    }
    function fn2(e){
        alert("fn2");
        //阻止事件的传播        
        if(e&&e.preventDefault){
            e.stopPropagation();
        //IE标准
        }else{
            window.event.cancelBubble = true;
        }
    }
</script>

</html>

六、js的bom

  1、window对象

    弹框的方法

      提示框:alert("提示信息");

      确认框:confirm("确认信息");

        有返回值:如果点击确认返回true 如果点击取消 返回false

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>            
    
</body>

<script type="text/javascript">
    var res = confirm("您确认要删除吗");
    alert(res);
</script>

</html>

    输入框:prompt("提示信息");

      也有返回值:如果点击确认 返回输入框的文本,如果点击取消返回null

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>            
    
</body>

<script type="text/javascript">
    var res = prompt("请输入密码?");
    alert(res);
</script>

</html>

    open方法:

      window.open("url地址");

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>            
    
</body>

<script type="text/javascript">
    window.open("http://www.baidu.com");
</script>

</html>

     定时器:

      setTimeout(函数,毫秒值);

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>            
    
</body>

<script type="text/javascript">
    setTimeout(
        function(){
            alert("x");
        },
        3000
    );
</script>

</html>

    clearTimeout(定时器的名称)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    var fn = function(){
        alert("x");
        timer = setTimeout(fn,2000);
    };
    var closer = function(){
        clearTimeout(timer);
    }
    fn();
</script>

</head>
<body>            
    <input type = "button" value = "button" onclick = "closer()">
</body>
</html>

    setInterval(函数,毫秒值);

    clearinterval(定时器的名称);

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
    var timer = setInterval(
        function(){
            alert("你好");
        },
        2000        
    );
    
    var closer = function(){
        clearInterval(timer);
    }
</script>

</head>
<body>            
    <input type = "button" value = "button" onclick = "closer()">
</body>
</html>

    需求:注册后五秒跳转到首页

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
        var time = 5;
        var timer;
        timer = setInterval(
            function(){
                var second = document.getElementById("second");    
                if(time >= 1)
                {
                    second.innerHTML = time;
                    time--;
                }
                else
                {
                    clearInterval(timer);
                    location.href = "demo11.html"
                }
            },
            1000
        );
</script>

</head>
<body>            
    恭喜您注册成功,<span id = "second" style = "color:red">5</span>秒后跳转到首页,如果不跳转请<a href = "demo11.html">点击这里</a>
</body>
</html>

    location跳转

      location.href = "url的地址"

      history

      back();

      forward();

      go();

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">
        
</script>

</head>
<body>            
    <a href = "demo14.html">后一页</a>
    <input type = "button" value = "上一页" onclick = "history.back()">
    <input type = "button" value = "下一页" onclick = "history.forword()">
</body>
</html>

七、js的dom

  1、理解dom对象的模型

    html文件加载到内存之后会形成一颗dom树,根据这些节点对象可以进行脚本代码的动态修改

    在dom树当中 一切皆为节点对象

  2、dom的方法和属性

    查找元素

            

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

</head>
<body>            
    <form name = "form1" action = "text.html" method = "post">
        <input type = "text" name = "username" value = "天道酬勤" id = "tid">
        <input type = "submit" name = "ok" value = "保存">
    </form>
</body>

<script type="text/javascript">
        var inputNode = document.getElementById("tid");
        alert(inputNode.value);
        
        var inputNode = document.getElementById("tid");
        alert(inputNode.type);
</script>

</html>

        

原文地址:https://www.cnblogs.com/2-NARUTO-2/p/7954892.html