zoukankan      html  css  js  c++  java
  • JavaScript

    JavaScript

    一、JavaScript简介

    (一)JavaScript的概念

    	JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
    	
    	java比较火 , livescript -- >javascript 蹭热度
    

    (二)JavaScript的特点

    1、几乎每个浏览器都有JavaScript的解析引擎。 
       JavaScript 有版本的 5.0   6
        js 5是基础   6是5的基础上进行优化。
        
    2、不需要编译,直接由浏览器解析运行。
    

    (三)JavaScript的作用

    1.制作动态效果  https://www.jq22.com/
    2.动态的修改html上标签元素
    3.配合ajax实现一些异步技术 (弹幕、直播送飞机、扔鸡蛋)
    
    目前很多网站里面都用了js。  js衍生了大量的工具库、比如 Vue、angular、react、Jquery等等....
    

    二、JavaScript的组成

    EcmaScript  js的语法部分
    dom         文档对象模型
    bom         浏览器对象
    

    三、JS的组成之ECMAScript

    (一)ECMAScript简介

    1、ECMAScript实际上是一种脚本在语法和语义上的标准 es5
    2、包含了JS的基本语法和基本对象
    

    (二)基本语法

    1.引入方式

    1、内部JS:在HTML网页中通过script标签直接嵌入JavaScript脚本代码。可以出现在页面的任何位置,且可以写多个。
    
    
    
    2、外部JS:外链式是单独定义脚本文件(*.js),再将这个脚本文件通过script标签的src属性引入到HTML页面中。一个页面中可以引用多个外部js文件。
    注意事项:引用外部js文件的script标签里不能再写自定义的javaScript代码。
    
    
    
    

    内部js

    <body>
        今天是星期二
        <script>
            alert('你知道今天是星期几吗');
            //alert('今天星期二');
        </script>
    </body>
    

    外部js

    外部js  demo.js
    alert('今天星期二');
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    <body>
        今天是星期二
        <script>
            alert('你知道今天是星期几吗');
            //alert('今天星期二');
        </script>
    </body>
    
    </html>
    <script src="./js/demo.js"></script>
    

    2.注释

    1、单行注释://注释的内容
    2、多行注释:/* 注释的内容 */
    

    3.数据类型

    JS中也存在很多的数据类型,以下给大家列出常用的几种数据类型
    
    java:
    byte short int long double float boolean char 基本八大数据类型
    String 
    
    java声明变量的方式
    int a = 10;
    
    
    (1)Undefined:Undefined类型只有一个值即undefined。当声明的变量未初始化时,该变量的默认值就是undefined。
    (2)Object:表示对象的类型,比如时间、数组等对象
    (3)Boolean:表示真假,只有两个值true和false。
    (4)Number:表示任意数字,在JS中所有值类型统称为数字类型。
    (5)String:字符串类型用单引号或者双引号赋值。
    
    
    我们可以通过typeof(变量名)来查看一个变量所属的数据类型。
    	
    

    4.变量

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>变量</title>
    </head>
    <body>
        
    </body>
    <script>
        var a = 10;
        console.log( typeof( a ) );    //number
        a = "abc";
        console.log( typeof( a ) );     //string
        a = true;   
        console.log( typeof( a ) );   //boolean
    
        console.log( typeof(c) );  //undifined
    </script>
    </html>
    

    5.运算符

    1、算术运算符:+  -   *  /  %   ++   -- 等。
    2、赋值运算符:=   +=   -=   *=  /=   %= 等。
    3、比较运算符:> 、< 、>= 、<=、==、!=、===(全等)
    4、逻辑运算符:&&(短路与)、||(短路或)、!(非)
    5、条件(三元)运算符:表达式 ? 值1 : 值2 (表达式为true取值1,表达式为false取值2) 
    以上所有运算符的使用与java类似。
    
    
    

    6.流程控制

    
    
    1、if...else...  
    
      if(表达式){
    	//执行分支
      }else{
    	//如果不满足if,执行else分支
      }
    
    
    2、switch 
    	var i = 10;
    	switch(i){
    		case 1:
    			break;
    		case 2:
    			break;
    		case 3:
    			break;
    		default:
    			break;
        }
    
    
    3、while  案例:打印1~100之间所有的整数
    
    while(循环条件){
    	//循环执行的语句  循环体
    }
    
    
    4、do...while  案例:打印1~100之间的偶数
    do{
    	循环体
    }while(循环条件);
    
    
    5、for  案例:打印1~100之间包含7的整型数字
    
    for(var i = 1;i<100;i++){
    
    }
    
    

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>流程控制</title>
    </head>
    <body>
        
    </body>
    
    
    <script>
        //打印1~100之间所有的整数
        // var i = 1;
        // while(true){
        //     console.log( i );
        //     i++;
        //     if(i>100){
        //         break;
        //     }
        // }
    
        //do...while  案例:打印1~100之间的偶数
        // var a  = 2;
        // do{
        //     console.log(a);
        //     a+=2;
        //     if(a>100){
        //         break;
        //     }
        // }while(true);
    
        //for  案例:打印1~100之间包含7的整型数字
        //7 17 27 37 47 57 67 70-79  87 97
    
        // for(var i = 1;i<100;i++){
        //     if(i%10==7 || parseInt(i/10)==7){
        //         console.log(i);
        //     }
        // }
    </script>
    </html>
    

    JavaScript-函数

    1、Function函数

    在java中定义方法:
    
    public void check(int a,String b){
    
    }
    
    check(10,"abc");
    
    
    函数的定义:
    
    function 方法名(形式参数列表){方法体}(推荐使用);
    
    function check(a,b){
    	
    }
    
    
    函数的好处:
    1.方法(函数)定义后,需要执行,否则方法的代码不会自动运行。
    2.方法(函数)可以配合js事件完成效果
    3.抽取代码到方法中,重复调用,提高代码可重用性
    
    js函数的特点:
    (1)方法定义时,形式参数类型不用写,返回值类型也不写
    (2)方法是一个对象,定义相同方法名会被覆盖
    (3)在JS中方法的调用只和方法名有关与方法的参数无关
    
    
    第一种:  无参无返
    function 函数名(){
    		
    }
    
    第二种:  有参无返
    function 函数名(参数1,参数2....参数n){
    
    }
    
    第三种: 有参有返
    function  函数名(a,b){
    	return 结果
    }
    
    
    第四种: 无参数有返回
    function 函数名(){
    	return 结果
    }
    
    
    
    // console.log(arr.join("-")); //苹果-香蕉-榴莲
    // console.log(arr.push("提子","哈密瓜","西瓜","香瓜"));   //类似 集合的    add   list.add();
    // console.log(arr);
    
    var arr = ['a','b','c','d'];
    console.log(arr);
    
    ```

    3、Date 日期对象

    1、创建日期对象:var now = new Date() 获取当前时间。
    
    2、日期对象的常用方法:
    (1)toLocaleString():根据本地时间格式,把 Date 对象转换为字符串。 (常用)
    (2)getTime():返回 1970 年 1 月 1 日至今的毫秒数
    (3)getHours():返回小时数。
    (4)getMinutes():返回分钟数。
    (5)getSeconds():返回秒数。
    
    

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    
    <script>
    
        var now = new  Date();
        console.log(now.getTime());
        console.log(now.getHours(),now.getMinutes(),now.getSeconds());
        console.log(now.toLocaleString());
        console.log(now.toLocaleDateString());
        //在java中 格式化时间   SimpleDateFormate
    </script>
    </html>
    

    4、Math数学对象

    1、创建:Math对象不用创建直接使用。使用时直接调用方法,如:Math.方法名();
    2、常用方法:
    (1)random():返回 0 ~ 1 之间的随机数
    (2)max(x,y):返回 x 和 y 中的最大值
    (3)min(x,y):返回 x 和 y 中的最小值
    (4)ceil(x):对数进行向上取整       
    (5)floor(x):对数进行向下取整
    (6)round(x):把数四舍五入为最接近的整数
    (7)abs(x):返回数的绝对值
    3、属性:PI,圆周率
    
    

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>数组对象</title>
    </head>
    <body>
        
    
        <script>
            // for(var i = 0 ; i <10;i++){
            //     console.log(Math.random());
            // }
    
            //打印1-10以内的整数
            console.log( parseInt( Math.random()*10 ) + 1 );   
            //求最值
            console.log(Math.max(10,11,2,3,99,-100));
            console.log(Math.min(10,11,2,3,99,-100));
            //取整
            console.log(Math.ceil(5.3));    //6
            console.log(Math.floor(5.3));   //5
            console.log(Math.round(5.3));   //5
            //绝对值
            console.log( Math.abs(-5));
    
            //圆周率
            console.log(Math.PI);
        </script>
    </body>
    </html>
    

    5、String字符串对象(重要)

    1、创建:
    (1)var str1 = "abc"; // string  
    (2)var str2 = new String("abc"); // object  了解
    
    2、常用方法:
    (1)获取字符串的长度 str1.length
    (2)是否以某个字符开头 startsWith()
    (3)是否以某个字符结尾 endsWith() 
    (4)截取字符串
    	a、substring(起始下标,结束角标)
    	b、substr(起始下标,截取长度)
    (5)根据某个字符拆分字符串 返回数组 split()
     (6) 判断字符串中是否存在指定字符  indexOf()
     (7) 转换大写  toUpperCase()
     (8) 转换小写  toLowerCase()
    
    
    

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    <script>
    
        var str = 'i love java';
        console.log( str.length );
        console.log( str.startsWith("i"));
        console.log( str.endsWith("java"));
        console.log( str.substring(3) ); //ove java
        console.log( str.substring(3,5) ); //ov  
        console.log( str.substr(3,3) ); //ove
        console.log(str.split(" "));   // ["i", "love", "java"] 
        console.log(str.indexOf("p"));   // p不在   返回的是-1
        console.log(str.indexOf("j"));   // 返回的是7  j在字符串中的索引位置
        console.log(str.toUpperCase())  //大写
        console.log(str.toLowerCase()); //小写
    </script>
    </html>
    

    8、RegExp正则表达式对象 校验

    1、单个字符:如 [a]、 [ab] 、[a-zA-Z0-9]
    2、元字符:元字符就是指那些在正则表达式中具有特殊意义的专用字符   d 任意数字    w 任意数字字母下划线
    3、量词符号:
    	?:表示出现0次或1次
    	*:表示出现0次或多次
    	+:表示出现1次或多次
    	{m,n}:表示m=<数量<=n
    4、开始结束符号:
    	^ 开始
    	$ 结束
    5、创建正则表达式对象:
    	(1)var reg = new RegExp("正则表达式");
    	(2)var reg = /正则表达式/;
    6、测试正则验证的方法:
    	test(参数):验证指定的字符串是否符合正则定义的规范
    
    7.案例 匹配手机号 11位  133  134 135 137 开头的 11位手机号
    
    匹配9位数的qq号
    var reg = /^[1-9]d{8}$/
    

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    
    
    <script>
        // 创建 正则表达式 
        //var reg = /^[a-z]$/;    //能够匹配单个小写字母
        //var reg = /^[a-z]{1,}$/; //能够匹配多个小写字母  ?  *  + {m,n}
        //var reg = /^[a-z]+$/;    //能够匹配多个小写字母  ?  *  + {m,n}
        // var reg = /^[a-zA-Z]+$/;    //能够匹配多个字母  ?  *  + {m,n}
        //var reg = /^[0-9]$/;        //匹配一个数字
        //var reg = /^[0-9]{1,}$/;        //匹配多个数字
        //匹配手机号 11位  133  134 135 137 开头的 11位手机号
        // var reg = /^13[3457]d{8}$/;   // d 同等于 [0-9]
        //匹配9位数的qq号 
        //var reg = /^[1-9]d{8}$/;
        //匹配任意数量 字母、数字 _ 
        var reg = /^w*$/;    // w 同等于   [a-zA-Z0-9_] 任意字母数字_
        var a = "34567a_8901";
        console.log(reg.test(a));
    
    </script>
    </html>
    

    (七) 事件

    1、元素被执行某种操作,触发某些代码,事件用来侦查元素行为
    2、如何为页面元素对象绑定事件
    	(1)在标签中指定事件的属性:<button id="btn" onclick="func01()">点我啊</button>
    	需要在脚本中,先行定义好func01这个方法~
    	(2)获取标签元素绑定事件:document.getElementById("btn").onclick = function(){}
    	第二种绑定事件用到的是匿名函数,直接书写方法体代码即可
    3、常见事件	
    

    image

    4、onclick:单击事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=\, initial-scale=1.0">
        <title>点击事件</title>
    </head>
    <body>
        
        <button type="button" onclick="money()">点击致富</button>
        
    </body>
    
    <script>
        function money(){
            alert("支付宝到账:一个亿");
        }
        
    </script>
    </html>
    

    效果图:

    image

    6、onchange:内容改变事件

    onchange ,内容改变事件,一般用于select 下拉列表,当用户选择不同选项会触发事件.
    
    常用案例: 地址 比如 省市区街道联动的效果
    

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script>
            function changeMn(){
                console.log("内容改变了");
            }
        </script>
    </head>
    <body>
        
        <select onchange="changeMn()">
            <option>请选择</option>
            <option>貂蝉</option>
            <option>王昭君</option>
            <option>杨玉环</option>
            <option>西施</option>
        </select>
    </body>
    </html>
    

    7、onmouseover/onmouseout: 鼠标从某元素移入或移开事件

    效果图:

    image

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            div{
                 100px;
                height: 100px;
                background-color: red;
            }
        </style>
    </head>
    <body>
        <div onmouseover="a()" onmouseout="b()">
    
        </div>
    </body>
    
    <script>
        function a(){
            console.log("鼠标划到div上");
        }
    
        function b(){
            console.log("鼠标从div上移开")
        }
    </script>
    </html>
    

    8、onkeydown/onkeyup:键盘按下或抬起事件

    
    

    效果图:

    image

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
        <input type="text" onkeydown="a()" onkeyup="b()"  />
    </body>
    
    <script>
    
        function a(){
            console.log("键盘的按键被按下");
        }
        function b(){
            console.log("键盘的按键被松开");
        }
    </script>
    </html>
    

    9、onblur/onfocus:元素失去焦点或获取焦点事件

    针对 文本输入框 input
    

    效果图:

    image

    代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
        <input type="text" onfocus="a()" onblur="b()"  />
    </body>
    
    <script>
    
        function a(){
            console.log("获得焦点");
        }
        function b(){
            console.log("失去焦点");
        }
    </script>
    </html>
    

    四、DOM:可以操作html文档对象

    (一)DOM简介

    1、文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。通过 HTML DOM,JavaScript 能够访问和改变 HTML 文档的所有元素。
    2、当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
    3、HTML DOM 模型被结构化为对象树:
    
    https://www.jq22.com/yanshi15391
    
    document.write()
    
    我们document获取html文档中任意一个元素包括里面文本内容,包括属性都可以获取。
    

    image

    (二)获取页面元素对象

    1、查找页面元素的方法:
    (1)document.getElementById(id):通过id号来查找元素。
    (2)document.getElementsByTagName(name):通过标签名来查找元素。
    (3)document.getElementsByClassName(name):通过类名来查找元素。
    (4)document.getElementsByName(name):通过name属性名来查找元素。
    2、以上四种方法中,由于页面中元素的id号是唯一的,所以通过id获取的元素个数也是唯一的;而其他三种方式获取的元素个数不唯一,所以使用时需要像数组一样去获取指定的元素。
    
    
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>修改元素属性</title>
    
    ```

    (四) 操作元素的样式

    1、直接操作
    	页面元素.style.css样式名称 = “值”
    2、间接操作:通过类名进行操作
    	页面元素.setAttribute(“class”, “类名1 类名2”)
    	先将css样式定义在类中,通过行间属性class,为其设置类
    
    
    在实际操作中。一般用得更多的是 间接操作;间接操作更加便利;代码复用性更高。更加适合样式频繁切换
    

    效果图:

    image

    代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .red{
                color:red;
                font-size: 30px;
                border: 1px solid gray;
            }
        </style>
    </head>
    <body>
        <p id="op">海贼王</p>
        <button onclick="add()">加样式</button>
        <button onclick="add2()">加样式2</button>
        <button onclick="hide()">隐藏op</button>
    </body>
    
    <script>
    
        function add(){
            var op = document.getElementById("op");
            //修改文本颜色
            op.style.color = "blue";
            //修改字体大小
            op.style.fontSize = "20px";
            //修改边框
            op.style.border = "1px solid red";
        }
    
        function add2(){
            var op = document.getElementById("op");
            op.setAttribute("class","red");
        }
    
        function hide(){
            var op = document.getElementById("op");
            op.style.display = "none";
        }
    
        // 1、直接操作  优先级比较高,操作比较繁琐
    	// 页面元素.style.css样式名称 = “值”
        // 2、间接操作:通过类名进行操作  优先级不高,操作比较简单
    	// 页面元素.setAttribute(“class”, “类名1 类名2”)
    	// 先将css样式定义在类中,通过行间属性class,为其设置类
    </script>
    </html>
    

    (五) 操作元素的内容 (双标签的本文内容,这种方式不能修改input的值)

    
    1、标签对象.innerHTML  获取或者设置内容 可以包含标签
    2、标签对象.innerText  获取或者设置内容 只包含文本
    
    3、input标签对象.value 获取或者设置input框中的内容
    4、innerText和innerHTML语法:
    	获取:标签对象.innerHTML
    	修改:标签对象.innerHTML=要修改的值
    
    

    效果图:

    image

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>修改元素文本内容</title>
    </head>
    <body>
        
        <p id="op">海贼王</p>
        <input type="text" id="hy" value="火影忍者" />
        <button onclick="change()">修改元素内容</button>
        <button onclick="getValue()">修改input内容</button>
    </body>
    
    <script>
    
        function getValue(){
            var hy = document.getElementById("hy");
            console.log(hy.value);
        }
        function change(){
               var op = document.getElementById("op");
               console.log(op.innerHTML);
                //修改元素内容
               //op.innerHTML = "<font color='red'>黑猫警长</font>";
               op.innerText = "<font color='red'>黑猫警长</font>";
        }
    
    
    
        // 1、标签对象.innerHTML  获取或者设置内容 可以包含标签
        // 2、标签对象.innerText  获取或者设置内容 只包含文本
    </script>
    
    
    </html>
    

    练习

    案例-计数器

    image

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>计时器</title>
    </head>
    <body>
        
        <button onclick="sub()">-</button>
        <span id="show">1</span>
        <button onclick="add()">+</button>
    </body>
    
    <script>
        function sub (){
            var show = document.getElementById("show");
            show.innerHTML = show.innerHTML - 1;
        }
        function add (){
            var show = document.getElementById("show");
            show.innerHTML = show.innerHTML*1 + 1;
        }
    </script>
    </html>
    

    案例演示:全选、全不选

    全选、全不选主要针对的是复选框   <input type="checkbox"/>
    
    

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
        <input type="checkbox" id="all" onclick="selectAll()"  />全选、全不选   <br>
        <input type="checkbox" id="fan" onclick="fanxuan()"  />反选  <br>
        <input type="checkbox" class="hobby" /> 写字
        <input type="checkbox" class="hobby" /> 打字
        <input type="checkbox" class="hobby" /> 看书
        <input type="checkbox" class="hobby" /> 写代码
    </body>
    
    <script>
        //实现全选、全不选
        function selectAll(){
           var hobby =  document.getElementsByClassName("hobby");
           var all =  document.getElementById("all");
           for(var i = 0; i < hobby.length;i++){
               hobby[i].checked = all.checked;
           }
        }
    
        //反选
        function fanxuan(){
           var hobby =  document.getElementsByClassName("hobby");
           
           for(var i = 0; i < hobby.length;i++){
               hobby[i].checked = !hobby[i].checked;
           }
        }
    </script>
    </html>
    

    JavaScript(ecmascript+ dom + bom)

    五、BOM

    (一)BOM简介

    1、Bom(browser object model):浏览器对象模型。在浏览器页面初始化时,会在内存创建一个全局对象,用来描述当前窗口的属性和状态,这个全局对象被称为浏览器对象模型。
    2、Bom有一个核心的对象window,window对象包含了6个核心模块
    	1、document对象:文档对象
    	2、Frames对象:html的自框架
    	3、History对象:页面的浏览记录
    	4、Location对象:当前页面的地址
    	5、Navigator对象:包含了浏览器相关信息
    	6、Screen对象:显示屏幕相关信息
    

    image

    (二)Window

    1.介绍

    1、所有的浏览器都支持window对象。它表示浏览器窗口,调用函数时window可以省略。
    
    

    2.创建

    直接使用window对象
    

    3.方法

    1、弹窗方法

    1. alert(); 显示带有一段消息和一个确认按钮的警告框  演示
    2. confirm(); 显示带有一段消息以及确认按钮和取消按钮的对话框  演示
    3. prompt(); 显示可提示用户输入的对话框 演示 (不常用)
    
    

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    
    <script>
        //警告框 系统向用户做出提示 不需要返回
        //alert("你的余额不足,请尽快充值");
    
        //确认框 系统向用户做出确认提示 ,需要用户回馈
        // var result = confirm("银行卡将支持100块,确定继续吗?");
        // if(result){
        //     //联系银行进行扣费
        // }else{
    
        // }
    
        //输入框
        var result =  prompt("请输入您的姓名");
        console.log(result);
    </script>
    </html>
    

    效果图:

    image

    image

    image

    2、定时器方法

    1、JS中的定时器函数有两种:
    	1、周期定时器:按照指定的周期来调用函数或代码串,执行多次。
    	var timeid=Window.setInterval(code,millisec);
    	window.clearInterval(timeid);清除定时器,使定时器停止执行函数或代码串。
    	参数说明:
    	code:要调用的函数或要执行的代码串。
    	millisec:周期性执行或调用 code 之间的时间间隔,以毫秒为单位。
    
    	2、超时定时器(一次性定时器):在指定的毫秒数后调用函数或代码串,只执行一次。
    	var timeid=Window.setTimeout(code,millisec);
    	window.clearTimeout(timeid);清除定时器,可以阻止定时器的执行。
    	参数说明:
    	code:要调用的函数或要执行的代码串。
    	millisec:在执行代码前需等待的毫秒数。
    2、案例:时钟显示
    
    
    
    

    效果图:

    每隔一秒显示当前系统时间

    代码:

    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
        <div id="time"></div>
    </body>
    
    <script>
        
        //获取当前系统时间
        // var date = new Date();
        // document.getElementById("time").innerHTML = date.toLocaleString();
    
        //第一种
        // window.setInterval(function(){
        //     //获取当前系统时间
        //     var date = new Date();
        //     document.getElementById("time").innerHTML = date.toLocaleString();
        // },1000);
    
        
        //第二种
        function getTime(){
            //获取当前系统时间
            var date = new Date();
            document.getElementById("time").innerHTML = date.toLocaleString();
        }
    
        window.setInterval('getTime()',1000);
    
        //var timeid=Window.setInterval(code,millisec);
    </script>
    
    </html>
    

    案例:图片轮换

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>图片轮播</title>
    </head>
    <body>
        
        <img src="./img/dd_scroll_1.jpg" onmouseover="stop()" alt="" id="show">
    </body>
    
    <script>
        var i = 1;
        var timer = setInterval(function(){
            i++;
            if(i>6){
                i = 1;
            }
            document.getElementById("show").src = "./img/dd_scroll_"+i+".jpg" ;
        },2000);
    
        function stop(){
            clearInterval(timer);
        }
        //var timeid=Window.setInterval(code,millisec);
    	//window.clearInterval(timeid);清除定时器,使定时器停止执行函数或代码串。
    </script>
    </html>
    

    案例:3秒后显示/隐藏图片

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>超时定时器</title>
    </head>
    <body>
        
        <img style="display: none;" src="./img/dd_scroll_1.jpg"  id="show" />
    </body>
    
    <script>
    
        setTimeout(function(){
        	//document.getElementById("show").style.display = "none";  隐藏
            document.getElementById("show").style.display = "block"; //显示
        },3000);
    
        // var timeid=Window.setTimeout(code,millisec);
    	// window.clearTimeout(timeid);清除定时器,可以阻止定时器的执行。
    </script>
    </html>
    

    (三)History

    1、window.history 对象包含浏览器历史。
    2、方法:
    	(1)history.back() - 等同于在浏览器点击后退按钮
    	(2)history.forward() - 等同于在浏览器中点击前进按钮
    3、想要出现前进后退的效果,必须存在路径的跳转!
    
    

    效果图:

    image

    代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <a href="test.html">跳转到test</a>
        <button onclick="forward()">前进</button>
    </body>
    
    
    <script>
    
        function forward(){
            history.forward();
        }
    </script>
    </html>
    
    ____________________________________________________________________________________________________________
    
    test.html
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>测试history</title>
    </head>
    <body>
        <!-- 点击后退按钮 回退到上一个历史记录 
            history.back()
        -->
        <button onclick="back()">后退</button>
    </body>
    
    <script>
    
        function back(){
            history.back();
        }
    </script>
    </html>
    

    (四)Location

    1、window.location 对象可用于获取当前页面地址(URL)并把浏览器重定向到新页面
    2、window.location 对象在编写时可不使用 window 这个前缀。
    3、创建:window.location/location
    4、方法:reload():刷新当前页面
    5、属性href:获取请求的URL/跳转指定的URL地址中 
    6、案例:3秒跳转页面
    
    
    
    让页面发生跳转的方式: 1.超链接  2.表单  3.location
    

    效果图:

    image

    代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>location</title>
    </head>
    <body>
        
        <div id="number"></div>
    </body>
    
    <script>
            var number = 3;
            document.getElementById("number").innerHTML = number;
            //周期   超时
            //页面加载成功后,自动跳转到百度
            setInterval(function(){
                number--;
                document.getElementById("number").innerHTML = number;
                if(number==0){
                    location.href = "http://www.baidu.com";
                }
            },1000);
            
    </script>
    </html>
    
  • 相关阅读:
    SwiftyUserDefaults对NSUserDefaults的封装扩展
    干货-iOS、mac开源项目及库,以后我也会持续更新。
    swift
    swift 集成使用最新版百度地图_v2.10.2(一)
    Xcode git 忽略user interface state文件
    ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)
    swift--字符串替换/过滤/切割
    干货分享--iOS及Mac开源项目和学习资料【超级全面】
    zookeeper和Eureka的区别
    Date工具遇到的一个坑
  • 原文地址:https://www.cnblogs.com/conglingkaishi/p/15200888.html
Copyright © 2011-2022 走看看