目录
2.一元运算符:只有一个运算数的运算符 e.g:a++ 、+3
7.比较与运算符:>、<、>=、<=、==、===(全等于): 例子:
一、基本语法
1.与html结合方式:
1.内部js:可以写在html的任意位


2.外部js:用src加载外部js文件

注意:<script>标签在一个html页面内可以定义多个。
2.注释

3.数据类型
1.原始数据类型(基本数据类型)

2.引用数据类型:对象
4.变量

例子:

5.运算符
1.typeof(变量名) :查看变量类型
2.一元运算符:只有一个运算数的运算符 e.g:a++ 、+3

3.二元运算符:a+b
4.三元运算符:?:、表达式 :简化if...else:

5.算术运算符:+、-、*、/、%...
6.赋值运算符:=、+=、*=、/=
        7.比较与运算符:>、<、>=、<=、==、===(全等于):
                 例子:
 

8.逻辑运算符:&&、||、!
1.&&:与(短路):如果左边你能得出答案是true,则就不进行右边表达式的判断,直 接真个表达是就是true,不管右边是false还是什么都不进行判断。
2. || :或(短路):与上同理,不过这里是false
3.其他类型转boolean:

6.流程控制语句

例子:
 
7.特殊语法

二、基本对象
  
 
1.function:函数(方法)对象

2.Array:数组对象
1.创建:3种方法,如果只有一个参数,那么就是代表数组的长度

         2.特点:
                 1.js中,数组元素的类型是可变的
                 2.js中,数组的长度是可变的,没有赋值的arr[i]显示undefined

  3.方法:
                 1.join(参数):将数组中的元素按照指定的分隔符拼接成字符串
                 
                 结果:
                  
                 2.push(要添加元素值):向数组中添加元素
                  3.pop(要抛出数组中的元素的下标):弹出数组中的元素
3.Date对象
           1.创建:var date=new Date();    //显示当前日期
         
        结果:
         
         2.方法
                 1.toLocaleString():返回当前date对象对应的时间本地字符串格式
                 
                 结果:
                 ![]()
                2.getTimme():获取毫秒值,返回当前如期对象描述的时间到1970年1月1日零点的 毫秒时差
                 
4.Math:数学对象
        1.创建:
                 *特点:math对象不需要创建直接调用即可
          2.方法:
                1.属性圆周率PI
                  ![]()
                 2.random() :返回0.0~1.0之间的随机数:[0,1)
                 3.ceil(x) :对数进行上舍入(向上取整)
                 4.floor(x) :对数进行下舍入(向下取整)
                 5.round(x) : 把数四舍五入为接近的整数
                 
                 例子:
                 
5.RegExp:正则表达式对象
         1.正则表达式:定义字符串的组成规则。
                 1.单个字符:[]
                         如:[a] [ab] [a-zA-z0-9_]
                           *特殊符号代表特殊含义的单个字符:
                                \d:单个数字字符[0-9]
                                 \w:单个单词字符[a-za-z0-9_]
                  2.量词符号:
                         ?:表示出现0次或1次
                         *:表示出现0次或多次
                          +:表示出现1次或多次            
                         {m,n} :表示m<=数量 <=n
                                 * m如果缺省:{,n}:最多n次
                                 * n如果缺少:{m,}:最少m次
                 3.开始结束符号:
                         *  ^:开始
                         *  $:结束
         2.正则表达式对象:
                 1.创建:推荐使用第二种
                    
                 2.方法
                         1.test(参数):验证指定的字符串是否符合正则定义的规范
                    注意:只要是符合正则定义规则,就返回true
                    解释下面图:reg2正则对象是由单个单词字符组成的字符串,而且长度最小是6,最大是12,如果username也是reg2正则定义的规则,就是如果不是由单个单词字符组成的字符串或者是长度小于6或者大于6,那么就代表了username违法了reg2的正则规范,那么就返回false,否则false。
用途:表单校验依赖于正则表达式,可以使用test来判断用户填写的信息是否符合你定义的规则,如果不是则返回false.
                        
6. Global
         1.特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。
            调用方法:方法名();
          2.方法:
         
                例子:
                 
三、事件
1.概念:某些组件被执行了某些操作后,触发某些代码的执行
2.事件:某些操作,如:单击、双击、键盘按下、鼠标移动
3.事件源:组件。如:按钮、文本输入框
4.注册监听器:将事件、事件源、监听器结合在一起。当事件源上发生了某个事件,则触发执行某个监听器的代码。
 6.常见的事件:
         1.点击事件:
                 1.onclick:单击事件
                 2.ondbclick:双击事件
         2.焦点事件:
                 1.onblur:失去焦点
                 2.onfocus:元素获得焦点
         3.加载事件:
                 1.onload:一张页面或一幅图像完成加载
          4.鼠标事件:
                 1.onmousedown:鼠标按钮被按下
                 2.onmouseup:鼠标按键被松开
                 3.onmousemove:鼠标被移动
                 4.onmouseover:鼠标移到某元素之上
                 5.onmouseout:鼠标从某元素移开
          5.键盘事件:
                 1.onkeydown:某个键盘按键被按下
                 2.onkeyup:某个按键被松开
                 3.onkeypress:某个键盘按键被按下并松开
         6.选择和改变:
                 1.onchange:域的内容被改变
                 2.onselect:文本被选中
         7.表单事件:
                 1.onsubmit:确认按钮被点击
                 2.onreset:重置按钮被点击
 例子:
 1.失去焦点事件:
  
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>常见事件</title>
</head>
<body>
<input id="username">
//注意:是按代码顺序执行的,因此先执行文本框在失去焦点时可以的
//注意:只要获得焦点后才能失去焦点
<script>
      document.getElementById("username").onblur=function(){
           alert("失去焦点了....");
        }
</script>
</body>
</html> 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>常见事件</title>
</head>
<script>
      document.getElementById("username").onblur=function(){
           alert("失去焦点了....");
        }
</script>
<body>
//注意:是按代码顺序执行的,因此这里先执行了js,后执行body里面的文本框,这样时获取不到id="username"的,会报错。
//注意:只要获得焦点后才能失去焦点
<input id="username">
</body>
</html> 
 
2.事件用法:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>常见事件</title>
</head>
<body>
<form action="#"  id="form" >
<form action="#" onclick="return CheckForm()"> //第二种表单事件方法
//注意:是按代码顺序执行的,因此这里先执行了js,后执行body里面的文本框,这样时获取不到id="username"的,会报错。
     <input name="username" id="username">
     <select id="city">
            <option>请选择</option>
            <option>北京</option>
            <option>上海</option>
            <option>浙江</option>
      </select>
      <input type="submit" value="提交">
</form>
</body>
<script>
  //加载完成事件:当所有页面加载完成后再触发或加载js代码
    window.onload=function(){
     
          document.getElementById("username").onblur=function(){ 
             //失去焦点事件
            //注意:只要获得焦点后才能失去焦点
                      alert("失去焦点了....");
             }
          document.getElementById("username").onmouseover=function(){  
            //绑定鼠标事件,当鼠标移到元素之上,就弹出
                      alert("鼠标来了。。。");
             }
 
           document.getElementById("username").onmousedown=function(){ 
            //绑定鼠标点击事件,当鼠标点击与元素时就弹出
                      alert("鼠标点击了。。。");
             }
 
        
           document.getElementById("username").onmousedown=function(event){ 
          //这里定义方法时,定义一个形参,接收event对象,event对象的button属性可以 获取鼠标哪个按钮键被点击
            //绑定鼠标点击事件,当鼠标点击与元素时就弹出
               alert(event.button);//鼠标从左到右数字为0,1,2(左键,滑轮,右键)
             }
  
           document.getElementById("username").onkeydown=function(event){ 
            //绑定键盘点击事件,当键盘时就弹出
             //keyCode是知道哪个键盘键被按下了,虽然选择已经不推荐使用了,但是浏览器还是能支持
                  if(event.keyCode==13){
                      alert("提交表单");    //13是回车
                        
             }
             document.getElementById("username").onchange=function(){ 
          
            //选择和改变事件,当文本框内容改变了就弹出
               alert("改变了。。");
             }
  
           document.getElementById("city").onchange=function(){ 
            //选择和改变事件,当下拉选择框内容改变了就弹出
               alert("改变了。。");)
             }
 
         document.getElementById("form").onsubmit=function(){ 
          //表单事件onsubmit,可以阻止表单的提交,方法返回false则表单被阻止提交
           //用于校验用户名格式是否正确
               var flag=false;//假设校验通过
                return flag;
             }
          //表单事件第二种方法
            function CheckForm(){
                return false;
                //或 return true;
            }
          
    }
</script>
</html> 
(1)表单全选例子:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            table{
                border:1px solid;
                width:500px;
                margin-left:30%;
            }
            td,th{
                text-align:center;
                border:1px solid;
            }
            div{
                margin-top:10px;
                margin-left: 30%;
            }
            .out{  
                    background-color:aliceblue
            }
            .over{
                background-color:blue;
            }
        </style> 
        <script>
/*
(1).js中的getElementByName是根据name属性获取一组元素节点对象
(2).js中的getElementByTagName是寻找有着标签名的所有元素
*/
            //1.在页面加载完成后执行下面操作
            window.onload=function(){
                
               // 2.给全选按钮
               document.getElementById("selectAll").onclick=function(){
                   //全选
                   var cbs=document.getElementsByName("cb");//获取所有的checkbox 
                   for (var i=0;i<cbs.length;i++){//遍历
                       cbs[i].checked=true;//设置每一个cb的状态为选中checked
                   }
               }
               document.getElementById("unselectAll").onclick=function(){
                   //全不选
                   var cbs=document.getElementsByName("cb");//获取所有的checkbox 
                   for (var i=0;i<cbs.length;i++){//遍历
                       cbs[i].checked=false;//设置每一个cb的状态为选中checked
                   }
               }
               document.getElementById("selectRev").onclick=function(){
                   //反选
                   var cbs=document.getElementsByName("cb");//获取所有的checkbox 
                   for (var i=0;i<cbs.length;i++){//遍历
                    //注意:反选不应该去判断他,应该直接取反
                    //    if(cb[i]==true){
                    //      cbs[i].checked=false;//设置每一个cb的状态为选中checked
                    //    }
                        
                         cbs[i].checked= ! cbs[i].checked;
                   }
               }
                   document.getElementById("safirst").onclick=function(){
                   //全选第一个框框
                   var cbs=document.getElementsByName("cb");//获取所有的checkbox 
                   for (var i=0;i<cbs.length;i++){//遍历
                     //或  cbs[i].checked=safirst.checked;//设置每一个cb的状态于sa状态一样的checked
                       cbs[i].checked=this.checked;
                    }
               }
              
                    //给所有tr绑定移到元素之上和移除元素之上的鼠标事件
                        var trs=document.getElementsByTagName("tr");//获取tr
                        for(var j=0;j<trs.length;j++){
                            //移到元素之上
                             trs[j].onmouseover=function(){
                                this.className="over"; //改变属性背景色
                             }
                             //移出元素
                             trs[j].onmouseout=function(){
                                this.className="out";
                            }
                        }
            }
        </script>
    </head>
    <body>
         <table>
             <caption>学生信息表</caption>
            <tr>
                <td><input type="checkbox" name="cb" id="safirst"></td>
                <td>编号</td>
                <td>姓名</td>
                <td>性别</td>
                <td><a href="javascript:void(0);">删除</a></td>
            </tr>
             <tr>
                 <td><input type="checkbox" name="cb"></td>
                 <td>1</td>
                 <td>岳一鹏</td>
                 <td>男</td>
                 <td><a href="javascript:void(0);">删除</a></td>
             </tr>
             <tr>
                <td><input type="checkbox" name="cb"></td>
                <td>2</td>
                <td>岳二鹏</td>
                <td>男</td>
                <td><a href="javascript:void(0);">删除</a></td>
            </tr>
            <tr>
                <td><input type="checkbox" name="cb"></td>
                <td>3</td>
                <td>岳三鹏</td>
                <td>男</td>
                <td><a href="javascript:void(0);">删除</a></td>
            </tr>
            <tr>
                <td><input type="checkbox" name="cb"></td>
                <td>4</td>
                <td>岳四鹏</td>
                <td>男</td>
                <td><a href="javascript:void(0);">删除</a></td>
            </tr>
         </table>
         <div>
             <input type="button" id="selectAll" value="全选">
             <input type="button" id="unselectAll" value="全不选">
             <input type="button" id="selectRev" value="反选">
         </div>
    </body>
</html> 
表单全选效果:
 (2)表单验证:
 分析:1.给表单绑定onsubmit事件。监听器中判断每一个方法校验的结果。
                 如果都为true,则监听器方法返回true.
                 如果有一个为false,则监听器方法返回false
             2.定义一些方法分别校验各个表单项
             3.给各个表单项绑定onblur事件
表单校验例子(这里只写了用户名的,因为其他也是同理的):
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户注册页面(表单验证)</title>
</head>
<style>
    body{
        background-color: aquamarine ;
        background-repeat:repeat;
        text-align: center;
    }
    .content{
        width:600px;
        height:650px;
        background-color: rgb(255,255,255,50%);
        /*margin-left:20%;*/
        /*margin-right: 50%;*/
        /*margin-top:20%;*/
        /*margin-bottom:50% ;*/
        margin:auto;/*让盒子居中*/
        /*padding:10px;内边距*/
    }
    #title{
        background-color: rgb(0,0,250,50%);
        text-align: center;
        padding: 20px;
    }
    .login{
        width:600px;
        height:500px;
    }
    #footer p a{
         color:red;
    }
    #footer{
        margin-top:40px;
    }
    .td_left{
        width:200px;
        text-align: right;
        height:50px;
        font-size: large;
    }
    .td_right{
        /*margin-right:50px;*/
        width:600px;
        padding-right : 100px;
    }
    #username,#phone,#email,#department,#password,#sure_password{
        width:250px;
        height:30px;
        border:1px ;
        solid:#A66A6A6;
        border-radius:5px;
        padding-left:20px;
    }
    #verification_code{
        width:150px;
        height:30px;
        border:1px ;
        solid:#A66A6A6;
        border-radius:5px;//圆角
        padding-left:20px;//左外边距
    }
    #img_verification_code{
        width:90px;
        height:30px;
        vertical-align: middle;//垂直居中展示
    }
    #sex1,#sex2{
        width:50px;
        height:30px;
    }
    #submit{
        width:100px;
        height:40px;
        background-color:rgb(0,0,250,30%);
        font-size: medium;
        margin-top: 10px;
    }
    .error{
        color:red;
    }
</style>
<script>
    //表单校验:
    window.onload=function(){
        //1.给表单绑定onsubmit事件
        document.getElementById("form").onsubmit=function(){
            //调用用户名校验方法  checkUsername();
            //调用密码校验方法    checkPassword();
            //return  checkUsername() && checkPassword()
            return checkUsername();
        }
            //给元素绑定离开焦点事件
            //当鼠标输入完名字后离开了文本框,自动校验输入的用户名是否正确
            //当页面加载完后才会执行
            document.getElementById("username").onblur=checkUsername;
        
    }
    //校验用户名
    function  checkUsername(){
        //1.获取用户名的值
       var username= document.getElementById("username").value;
        //2.定义正则表达式
        var reg_username= /^\w{6,12}$/ ;
        //3.判断值是否符合表单定义时正则规则
        var flag=reg_username.test(username);
        //4.不符合或符合则提示信息
        var s_username=document.getElementById("s_username");
        if(flag){
            //提示用户名无误
            s_username.innerHTML="通过";
        }
        else{
            //提示用户名有误
            s_username.innerHTML="不通过";
        }
        return flag;
    }
</script>
</head>
<body>
<div class="content">
    <h2 id="title">注册</h2>
    <div  class="login">
        <form action="#" method="post" id="form">
             <table>
                <tr>
                    <td class="td_left">
                        <label for="username">姓名:</label>
                    </td>
                    <td class="td_right">
                        <input type="text" name="姓名" id="username" placeholder="请输入您的真实姓名">
                        <span id="s_username" class="error"></span>
                    </td>
                </tr>
                <tr>
                    <td class="td_left">
                        <label for="sex1" for="sex2" >性别:</label>
                    </td>
                    <td class="td_right">
<!--这里的checked的作用是默认选中--->
              <input type="radio" name="sex" value="male"  id="sex1" checked>男
                    <input type="radio" name="sex" value="female"  id="sex2">女
                    </td>
                </tr>
                <tr>
                    <td class="td_left">
                        <label for="phone">电话:</label>
                    </td>
                    <td class="td_right"><input type="text" name="电话" id="phone"></td>
                </tr>
                <tr>
                    <td class="td_left">
                        <label for="department">所在部门:</label>
                    </td>
                    <td class="td_right"><input type="text" name="所在部门" id="department"></td>
                </tr>
                <tr>
                    <td class="td_left">
                        <label for="email">邮箱:</label>
                    </td>
                    <td class="td_right"><input type="text" name="邮箱" id="email" ></td>
                </tr>
                 <tr>
                     <td class="td_left">
                         <label for="password">密码:</label>
                     </td>
                     <td class="td_right">
                         <input type="password" name="邮箱" id="password" >
                         <span id="s_password"></span>
                    </td>
                 </tr>
                 <tr>
                     <td class="td_left">
                         <label for="sure_password">确认密码:</label>
                     </td>
                     <td class="td_right"><input type="password" name="邮箱" id="sure_password" ></td>
                 </tr>
                 <tr>
                     <td class="td_left">
                         <label for="verification_code">验证码:</label>
                     </td>
                     <td class="td_right">
                         <input type="text" name="验证码" id="verification_code" >
                         <img src="../img/verification_code.jpg" id="img_verification_code">
                     </td>
                 </tr>
                <tr>
                    <td colspan="2" td_right >
                        <input type="submit" value="立即注册" id="submit">
                    </td>
                </tr>
            </table>
        </form>
        <div id="footer">
            <p>已有账号?<a href="login.html">立即登录</a></p>
        </div>
    </div>
</div>
</body>
</html> 
例子运行效果:
四、DOM事件
1.DOM的简单学习
         *功能:控制html文档的内容 :增上改查内容
         *代码:获取页面标签(元素)对象Element   :
                document.getElementById("id值");  :通过元素id获取元素对象
        *操作Element对象:
                 1.设置属性值:设置的属性值要对应元素对象有才可以,因此借助API文档(如下举例)
                        *注意.图片路径使用的是反斜杠,使用正斜杠会出现图片无法显示的问题。
                         *明确过去的对象是哪一个?
                         *查看API文档,查找其中有哪些属性可以设置
   
举例src例子:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>DOM事件简单学习</title>
    </head>
    
    <body>
       <img id="light" src="F:/桌面文件/HTML+CSS/img/turn_off_the_light.png">
       <!-- <img id="light" src="F:\桌面文件\HTML+CSS\img\open_the_light.png"> -->
       <script>
        //通过id获取元素对象
        var light=document.getElementById("light");
        alert("我要换图片了。。。。");
        light.src="F:/桌面文件/HTML+CSS/img/open_the_light.png";
        //弹不出对象,因为script定义再元素对象上面,图片还没加载完成,因此弹出窗口显示null
        //要是想获取到则将script放在要获取元素的下方
        //这里要点击弹出窗口的确定按钮,如果不点是不会显示下面的图片的
      
        // light.setAttribute("src","F:\桌面文件\HTML+CSS\img\open_the_light.png");
    </script>
    </body>
</html> 
运行效果如图:
 (说明:一开始为关灯图片,当点击了弹出窗口的确定按钮,图片换成了开灯图片)

            
2.修改标签内容:
        1.属性:innerHTML,设置标签体内容
(注意:一般如果没有修改,都是应为获取的元素对象是空的原因,可以通过弹出窗口中显示是否元素对象是空)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>DOM事件简单学习</title>
    </head>
    
    <body>
       <img id="light" src="F:/桌面文件/HTML+CSS/img/turn_off_the_light.png">
       <h1 id="title">哇哈哈哈哈哈</h1>
    </body>
    <script>
        //通过id获取元素对象
        var title=document.getElementById("title"); 
        alert("我要换内容啦。。。");
        //修改内容
        title.innerHTML= "喜羊羊5555 "; 
    </script>
</html> 
事件简单学习:
        *功能:某些组件被执行了某些操作后,触发了某些代码的执行功能
         *如何绑定事件:
                 1.直接在html标签上,指定事件的属性(操作),属性值就是js代码
                         1.onclick:单击事件
                 (注意:这个是直接在html标签上指定属性onclick,当点击图片后就弹出对话框显示我被点击了)(缺点:因为位置有限,这里写只能写一个)
 <body>
       <img id="light" src="F:/桌面文件/HTML+CSS/img/turn_off_the_light.png" onclick="alert('我被点击了');">
       <h1 id="title">哇哈哈哈哈哈</h1>
    </body> 
使用方式:
 (写在js的函数里,可以写很多弹出内容)
 (缺点:html标签和事件绑定在一起,耦合与过高)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>事件的简单学习</title>
    </head>
    
    <body>
       <img id="light" src="F:/桌面文件/HTML+CSS/img/turn_off_the_light.png" onclick="fun()">
       <h1 id="title">哇哈哈哈哈哈</h1>
    </body>
    <script>
       function fun(){
           alert("我被点击了");
           alert("我又被点击了");
       }
    </script>
</html> 
2.通过js获取于是怒对象,指定事件属性,设置一个函数:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>事件的简单学习</title>
    </head>
    
    <body>
       <img id="light" src="F:/桌面文件/HTML+CSS/img/turn_off_the_light.png" >
       <h1 id="title">哇哈哈哈哈哈</h1>
    </body>
    <script>
       function fun2(){
           alert("咋老点我");
           
       }
       var light2=document.getElementById("light");
       light2.onclick=fun2;
    </script>
</html> 
案例:电灯开关:
         分析:1.获取图片对象
                     2.绑定单击事件
                     3.每次点击切换图片
                                 *规则:如果灯是开的on,切换图片为of,否则反之:使用标记flag来完成
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>案例:电灯开光</title>
    </head>
    
    <body>
       <img id="light" src="F:/桌面文件/HTML+CSS/img/turn_off_the_light.png" >
       <h1 id="title">哇哈哈哈哈哈</h1>
    </body>
    <script>
        var light2=document.getElementById("light");
        var test=false;
    
       function fun2(){
      
          if(test){
             light2.src="F:/桌面文件/HTML+CSS/img/turn_off_the_light.png";
             test=false;
          }
          else{
            light2.src="F:/桌面文件/HTML+CSS/img/open_the_light.png";
            test=true;
        }
    }
       light2.onclick=fun2;
    </script>
</html> 
BOM对象
1.概念:browesr object model 浏览器对象模型
         *.将浏览器的各个组成部分封装成对象。
 2.组成:
         *.window:窗口对象(重要)
         *.Navigator:浏览器对象
         *.Screen:显示器屏幕对象
         *.History:历史记录对象(重要)
         *.Location:地址栏对象(重要)
1.window窗口对象:
         1.创建:
         2.方法:
             1.与弹出框有关的方法
                  *.alert():显示带有一段消息和一个确认按钮的警告框。
                  *confirm() :显示带有一段消息以及确认按钮和取消按钮的对话框。
                  *prompt() : 显示可提示用户输入的对话框。
              2.与打开和关闭有关的方法:
                  *.close() :关闭浏览器窗口
                   *.open() :打开一个新的浏览器窗口
               3.与定时器有关的方法:
                     *.setTimeout() :在指定的毫秒数后调用函数或计算表达式
                            *参数:
                                 1.js代码或者方法对象
                                  2.毫秒值  :即到什么时间就执行代码
                     *.clearTimeout() : 取消由setTimeout() 方法设置的timeout
                     *.setInterval() : 循环定时器,按照指定周期(以毫秒计)来调用函数或计算表达式
                      *.clearInterval() :取消由setInterval()设置的timout
         3.属性:
           第一类方法(获取其他BOM对象):
                 *. history
                 *. location
                 *. Navigator
                 *. Screen
         第二类方法:获取DOM对象:
                 *. document对象
                 用法:
                          1.window.document.getElementById();
                           2.dicument.getElementById();
         4.特点:
                 *.window对象不需要创建可以直接使用,直接用window.方法名即可
                 *.window引用可以省略,直接方法名()即可     
    
 1.与弹出框有关的方法:
1.alert()方法:
 (说明,alert()方法可以使用这两种方式调用)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>BOM对象</title>
    </head>
    <script>
        alert("hello window");//正确
        window.alert("hello a");//正确
       
    </script>
    <body>
    </body>
</html> 
 2.confirm()方法:
 用户点击确定按钮,返回true;点击取消按钮,返回false。
 (说明:获取用户的选择后(用户点击了确定还是取消按钮),可以利用该值进行其他操作,如下
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>BOM对象</title>
    </head>
    <script>
    
        var flag=confirm("您确定要退出嘛?");//获取用户的选择
        // alert(flag);
        if(flag){
            //退出操作
            alert("欢迎再次光临");
        }
        else{
            //提示:收别抖
            alert("手别抖。。");
        }
    </script>
    <body>
    </body>
</html> 
   3. prompt()方法:
 (返回值获取用户输入的值)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>BOM对象</title>
    </head>
    <script>
//第三种:prompt()方法
            var result=prompt("请输入用户名");//输入框
            alert(result);
    </script>
    <body>
    </body>
</html> 
2.打开与关闭的方法:
1.open()和close()方法:
 (说明:对于open()方法会返回一个新的window对象)
!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>BOM对象</title>
    </head>
    <body>
        <input  id="openBtn" type="button" value="打开窗口">
        <input  id="closeBtn" type="button" value="关闭窗口">
    </body>
</html>
<script>
     var openBtn=document.getElementById("openBtn");
     var newwindow;
     openBtn.onclick=function(){
        //  open();//打开新窗口,将要打开的窗口网址放在括号()里面
        newwindow=open("http://www.baidu.com");//获取新窗口对象
     }
     var closeBtn=document.getElementById("closeBtn");
     closeBtn.onclick=function(){
        //  open();//关闭新窗口,将要打开的窗口网址放在括号()里面
        newwindow.close();//关闭的是调用者的窗口,即谁调用关闭谁
     }
</script> 
3.与定时器有关的方法:
 1.setTimeout()方法:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>BOM对象</title>
    </head>
    <body>
        
    </body>
</html>
<script>
   
    // 第一种写法: setTimeout("alert('Boom~');",3000);
//第二种写法:
     setTimeout("fun();",2000);
//第三种写法:setTimeout(fun,2000);
     function fun(){
         alert('booom~');
     }
</script> 
   2.setInterval()方法:循环定时器
 (说明:在例子中是每2秒弹出一次,用法和setTimeout用法是一样的)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>BOM对象</title>
    </head>
    <body>
        <input  id="openBtn" type="button" value="打开窗口">
        <input  id="closeBtn" type="button" value="关闭窗口">
    </body>
</html>
<script>
    setInterval(fun,2000);
     function fun(){
         alert('booom~');
     }
</script> 
3. clearTimeout()方法:取消定时器
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>BOM对象</title>
    </head>
    <body>
        <input  id="openBtn" type="button" value="打开窗口">
        <input  id="closeBtn" type="button" value="关闭窗口">
    </body>
</html>
<script>
   var id= setTimeout(fun,2000);//第一个参数位置直接写函数对象,setTimeout会返回它对象
    clearTimeout(id);//参数放取消定时器的对象
     function fun(){
         alert('booom~');
     }
</script> 
案例:轮播图
分析:
         1.在页面上使用img标签展示图片
         2.定义一个方法,修改图片对象的src属性
         3.定义一个定时器,每个3秒调用方法一次
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>轮播图</title>
        <style>
            body{
                /* width:984px;
                height:500px;
                /* padding:2px; */
                /* margin:0 auto; */
                background-color: antiquewhite;
                display:flex;
                margin:auto;
                justify-content: center;
                align-items: center;
                padding-top: 200px;
            }
            #img{
                width:100px;
                height:200px;
            }
        </style>
    </head>
    <body>
        <div id="img">
            <img id="photos" src="F:/桌面文件/HTML+CSS/img/轮播图/light_1.png">
        </div>
    </body>
    <script>
        //修改图面属性的方法
        var number=1;
        function fu(){
            number++;
            if (number >2){  //判断number是否大于3
                number=1;
            }
            var pho=document.getElementById("photos");
            pho.src="F:/桌面文件/HTML+CSS/img/轮播图/light_"+number+".png"; 
 //通过number数字来切换对应编号的图片
        }
            //2.定义定时器
            setInterval(fu,2000);//2000毫秒等于2秒
      
    </script>
</html> 
window 属性:
         1.第一类方法: window属性可以获取DOM和BOM对象:
             1.history()方法:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>window属性</title>
     
    </head>
    <body>
        <script>
         //获取history
         var h1=window.history;
         var h2=history;
         alert(h1);
         alert(h2);
        </script>
    </body>
</html> 
            2.location()方法:
                       1.方法:
                                 *.reload() :重新加载当前文档(刷新)
                        2.属性:
                                 *. href   :  设置或返回完整的URL
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Location</title>
        
    </head>
    <body>
      
        <input type="button" id="btn" value="刷新">
        <input type="button" id="gobaidu" value="去百度">
        <script>
            //reload方法,定义ige按钮,点击按钮,刷新当前页面
            //1.获取按钮
            var btn=document.getElementById("btn");
            btn.onclick=function(){//绑定单击事件
                location.reload();//刷新页面
            }
            //获取href路径
            var href=location.href;
            //alert(href);
            //点击去百度按钮,访问百度网站
            //1.获取按钮
            var gobaidu=document.getElementById("gobaidu");
            gobaidu.onclick=function(){//绑定单击事件
                location.href="http://www.baidu.com";//如果这里不加http协议,会出现找不到文件
            }
        </script>
    </body>
</html> 
案例:自动跳转首页
 分析:1.显示页面效果<p>标签
             2.倒计时读秒效果实现      
                 2.1 定义一个方法,获取span标签,修改标签体内容,修改时间--
                 2.2 定义一个定时器,1秒执行一次该方法
                 2.3 在方法中判断时间,如果<0,则跳转到首页
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>自动跳转首页</title>
        <style>
            p{
                text-align: center;
            }
            span{
                color:red;
            }
        </style>
        <script>
            //倒计时读秒效果实现
            var second=5;
            var time =document.getElementById("time");
            function showtime(){
               second--;
               if (second<=0){
                   location.href="http:www.baidu.com";
               }
        
               time.innerHTML=second+"";
            }
            //设置定时器,1秒执行一次
            setInterval(showtime,1000);
        </script>
    </head>
    <body>
       <p>
           <span id="time">5</span>秒之后,自动跳转到首页....
       </p>
    </body>
  
</html> 
        3.Hostory()方法:历史记录对象
                 1.创建(获取):
                         1.window.history
                         2.history
                 2.方法:
                         *. back() : 加载history列表的前一个URL
                         *. forward() : 加载history列表中的下一个 URL
                          *. go(参数) : 加载history列表中的某个页面
                             *.参数:
                                 *.正数:前进几个历史记录
                                 *. 负数 :后退几个历史记录
                  3.属性:
                         *. length : 返回当前窗口历史列表中的URL数量
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>history对象</title>
        
    </head>
    <body>
         <input type="button" id="btn" value="获取历史记录个数">
         <a href="F:\桌面文件\HTML练习\js\轮播图.html">轮播图</a>
         <input type="button" id="forward" value="前进">
         <input type="button" id="back" value="后退">
        <script>
            var  btn=document.getElementById("btn");
            btn.onclick=function(){
                var length=history.length;   //length属性
                alert(length);
            }
 
        
//forward()方法和go()方法
            var  forward=document.getElementById("forward");
            forward.onclick=function(){
            //    history.forward();//前进,回到前一个网页 
               history.go(-1);
            }
//back()方法
            var  back=document.getElementById("back");
            back.onclick=function(){
               history.back();//后退,回到后一个网页
               
            }
           
        </script>
    </body>
</html> 
DOM对象
        *概念:Document Object Model 文档对象模型
                 *.将标记语言文档的各个组成部分,封装为对象,可以使用这些对象,对标记语言文档进行CRUD(增删改查的)动态操作。
1.核心DOM:
         *.Document : 文档对象(重点)
         *.Element : 元素对象(重点)
         *.Attribute : 属性对象
         *.Text : 文本对象
         *. Comment :注释对象
          .Node : 节点对象,其他5个的父对象(重点)
 2.XML DOM:针对XML文档的标准模型
 3.HTML DOM  : 针对html文档的标准模型
核心DOM模型
          *. Document : 文档对象
                 1.创建(获取):在html dom模型中可以使用window对象来获取
                         *.window.document
                         *.document
                 2.方法:
                         1.获取Element对象:
                             *.getElementById()  :  根据id属性值获取元素对象,id属性值一般唯一
                             *.getElementsByTagName() : 根据元素名称获取元素对象们,返回值是一个数组
                             *.getElementsByClassName() : 根据Class的属性值获取元素对象们,返回值是一个数组
                             *.getElementsByName() :根据name书写纸获取元素对象们
                         2.创建其他dom对象:
                               *. createAttribute(name) : 
                               *. createComment() : 
                               *. createElement() : 
                               *. createTextNode() : 
                 3.属性:
          *. Element : 元素对象
                 1.创建/获取:通过document来获取和创建
                 2.方法:
                         *. removeAttribute() : 删除属性
                         *.setAttribute()  :  设置属性
          *. Node : 节点对象,其他5个的父对象
                  1.特点:所有dom对象都可以被认为是一个节点
                   2.方法:
                         *CRUD dom 树:
                                 *. appendChild() : 向节点的子节点列表的结尾添加新的子节点。
                                 *. removeChild() : 删除(并返回)当前节点的指定子节点。
                                 *. replaceChild() : 用新节点替换一个子节点。
                 3.属性:
                         *.parentNode:返回节点的父节点
一、获取element对象方法:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>DOM</title>
    </head>
    <body>
        <div id="div1">div1</div>
        <div id="div2">di2</div>
        <div id="div3">div3</div>
        <div class="clas1">div4</div>
        <div class="clas1">div5</div>
        <input  type="text" name="username">
    
    </body>
    <script>
        //2.根据元素名称获取对象们,返回值是一个数组
       var divs =document.getElementsByTagName("div");//参数放标html签名称
      alert(divs.length);
      //3.根据Class属性来获取
      var div_cs =document.getElementsByClassName("clas1");//参数放标html签名称
      alert(div_cs.length);
      //通过name属性值来获取
      var ele_username =document.getElementsByName("username");//参数放标html签名称
      alert(ele_username.length);
    </script>
</html> 
二、创建其他dom对象:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>DOM</title>
    </head>
    <body>
    <script>
      var table=document.createElement("table");//创建一个html table对象
      alert(table);
      
    </script>
</html> 
Element元素对象:
      1.  removeAttribute() : 删除属性   和  setAttribute()  :  设置属性:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>element对象</title>
    </head>
    <body>
        <a>点我</a>
        <input type="button" id="btn_set" value="设置属性">
        <input type="button" id="btn_set2" value="删除属性">
    </body>
    <script>
        var btn_set=document.getElementById("btn_set");
        btn_set.onclick=function(){
            //获取a标签
            var e_a= document.getElementsByTagName("a")[0];
            e_a.setAttribute("href","http://ww.baidu.com");
        }
        var btn_set2=document.getElementById("btn_set2");
        btn_set2.onclick=function(){
            //获取a标签
            var e_a= document.getElementsByTagName("a")[0];
            e_a.removeAttribute("href","http://ww.baidu.com");
        }
    </script>
</html> 
2.Node节点对象:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>DOM</title>
        <style>
            div{
                border: 1px solid red;
            }
            #div1{
                width:200px;
                height:200px;
            }
            #div2{
                width:100px;
                height:100px;
            }
            #div3{
                width:50px;
                height:50px;
            }
        </style>
    </head>
    <body>
        <div id="div1">
            <div id="div2">div2</div>
            div1
        </div>
       <input type="button" id="createbtn" value="添加子节点">
    </body>
    <script>
       var div2=document.getElementById("div2");
       var div1=div2.parentNode;  //element属性
       alert(div1);
    </script>
</html> 
案例:动态表格(增加、删除)
分析:
         1.添加:
                 1.给添加按钮绑定单击事件
                 2.获取文本框内容
                 3.创建tr,td,设置td的文本为文本框内容
                 4.创建
                 5.将td添加到tr中
                 6.获取table,将tr添加到table中
         2.删除:
                 1.确定点击的是哪一个超链接:给每一个超链接添加一个单击事件:
                         *. <td><a href="javascript:void(0);" οnclick="delTr(this);">删除</a></td>
                 2.怎么删除?:
                         *. removeChild():通过父节点删除子节点
  方法一:动态添加:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>动态表格添加、删除</title>
        <style>
            table{
                border:1px solid;
                margin:auto;
                width:500px;
            }
            td,th{
                text-align:center;
                border:1px solid;
            }
            div{
                text-align:center;
                margin:50px;
            }
        </style>
    </head>
    <body>
      <div>
        <input type="text" id="id" name="id" placeholder="请输入编号">
        <input type="text" id="name"  placeholder="请输入姓名">
        <input type="text" id="gender"  placeholder="请输入性别">
        <input type="button" id="btn_add"  value="添加">
    </div>
        <!--html中的表格-->
        <!--table是独占一行的,其中的border是边框,不设置或者为0则表示没有边框-->
        <!--一个tr代表表格中的一行-->
        <!--其中th是表格的表头,字体为粗体-->
        <!---其中caption是表格的标题-->
        <!--其中colspan代表的是横向跨2格,2代表跨越的格数,rowspan="2"代表垂直跨2格--><!--跨行、列-->
        <!--其中cellpadding是表格的边距大小,即表格内的文字与表格的边框的距离的大小-->
        <table>
            <caption>这是html的一个练习</caption>
             <tr>
                 <th >编号</th>
                 <th>名称</th>
                 <th>日期</th>
                 <th>操作</th>
                
             </tr>
             <tr>
                  <td>04201</td>
                  <td>12345</td>
                  <td>佩大奇</td>
                  <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
           <!-- this代表当前超链接的对象 -->
                </tr>
             <tr>
                 <td>04202</td>
                 <td>67891</td>
                 <td>乔大治</td>
                 <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
             </tr>
             <tr>
                 <td>23456</td>
                 <td>34567</td>
                 <td>34567</td>
                 <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>  
             </tr>
        </table>
      
    </body>
   <script>
//方法一:动态表格的添加
        var btn_add=document.getElementById("btn_add");
        //1.给按钮绑定单击事件
        btn_add.onclick=function(){
            //2.获取文本框的内容
            var id=document.getElementById("id").value;
            var name=document.getElementById("name").value;
            var gender=document.getElementById("gender").value;
            //3.创建td,赋值td的标签体
            //id的td
            var td_id=document.createElement("td");
            // td_id=appendChild(id);//不能把字符串当作子节点直接添加
            var text_id=document.createTextNode(id);
            td_id.appendChild(text_id);
             // name的td
             var td_name=document.createElement("td");
             var text_name=document.createTextNode(name);
            td_name.appendChild(text_name);
             //gender的td
             var td_gender=document.createElement("td");
             var text_gender=document.createTextNode(gender);
             td_gender.appendChild(text_gender);
             //删除标签
             var td_a=document.createElement("td");
             var ele_a=document.createElement("a");
             ele_a.setAttribute("href","javascript:void(0);");
             ele_a.setAttribute("onclick","delTr(this)");//只要是单击了超链接就可以进行删除操作
             var text_a=document.createTextNode("删除");
             ele_a.appendChild(text_a);
             td_a.appendChild(ele_a);
             
            //4.创建tr
            var tr=document.createElement("tr");
            //5.添加td到tr中
            tr.appendChild(td_id);
            tr.appendChild(td_name);
            tr.appendChild(td_gender);
            tr.appendChild(td_a);
            //6.获取table
            var table=document.getElementsByTagName("table")[0];
            table.appendChild(tr)
        }
//动态表格的删除
       //删除方法
       function delTr(obj){
        //    alert(obj);
        var table=obj.parentNode.parentNode.parentNode;
        var tr=obj.parentNode.parentNode;
        table.removeChild(tr);//通过父节点删除子节点,父节点table,子节点tr;
       }
   </script>
</html> 
方法二:使用innerHTML动态添加:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>动态表格添加、删除</title>
        <style>
            table{
                border:1px solid;
                margin:auto;
                width:500px;
            }
            td,th{
                text-align:center;
                border:1px solid;
            }
            div{
                text-align:center;
                margin:50px;
            }
        </style>
    </head>
    <body>
      <div>
        <input type="text" id="id" name="id" placeholder="请输入编号">
        <input type="text" id="name"  placeholder="请输入姓名">
        <input type="text" id="gender"  placeholder="请输入性别">
        <input type="button" id="btn_add"  value="添加">
    </div>
        <!--html中的表格-->
        <!--table是独占一行的,其中的border是边框,不设置或者为0则表示没有边框-->
        <!--一个tr代表表格中的一行-->
        <!--其中th是表格的表头,字体为粗体-->
        <!---其中caption是表格的标题-->
        <!--其中colspan代表的是横向跨2格,2代表跨越的格数,rowspan="2"代表垂直跨2格--><!--跨行、列-->
        <!--其中cellpadding是表格的边距大小,即表格内的文字与表格的边框的距离的大小-->
        <table>
            <caption>这是html的一个练习</caption>
             <tr>
                 <th >编号</th>
                 <th>名称</th>
                 <th>日期</th>
                 <th>操作</th>
                
             </tr>
             <tr>
                  <td>04201</td>
                  <td>12345</td>
                  <td>佩大奇</td>
                  <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
           <!-- this代表当前超链接的对象 -->
                </tr>
             <tr>
                 <td>04202</td>
                 <td>67891</td>
                 <td>乔大治</td>
                 <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>
             </tr>
             <tr>
                 <td>23456</td>
                 <td>34567</td>
                 <td>34567</td>
                 <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td>  
             </tr>
        </table>
      
    </body>
   <script>
//方法二:使用innerHTML追加表格
            var btn_add=document.getElementById("btn_add");
            //1.给按钮绑定单击事件
            btn_add.onclick=function(){
            //2.获取文本框的内容
            var id=document.getElementById("id").value;
            var name=document.getElementById("name").value;
            var gender=document.getElementById("gender").value;
            //获取table
            var table=document.getElementsByTagName("table")[0];
            
            //追加一行
            table.innerHTML +="<tr>\n"+
                                 " <td>"+id+"</td> \n"+
                                 " <td>"+name+"</td>\n"+
                                  "<td>"+gender+"</td>\n"+
                                 ' <td><a href="javascript:void(0);" onclick="delTr(this);">删除</a></td> \n'+
                                  "</tr>";
            }
//动态表格的删除
       //删除方法
       function delTr(obj){
        //    alert(obj);
        var table=obj.parentNode.parentNode.parentNode;
        var tr=obj.parentNode.parentNode;
        table.removeChild(tr);//通过父节点删除子节点,父节点table,子节点tr;
       }
   </script>
</html> 
HTML DOM: 
 
说明:html DOM 定义了所有HTML元素的对象和属性,以及访问它们的方法,简单说:html DOM是关于如何让获取、修改、添加或删除HTML元素的标准。
         1.标签体的设置和获取:  innerHTML : 
         2.使用html元素对象的属性
         3.控制样式
2.使用html元素对象的属性:innerHTML使用方法:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UUTF-8">
        <title>HTML_DOM</title>
    </head>
    <body>
        <div id="div1">
            div
        </div>
        <script>
            var div=document.getElementById("div1");
            var innerHTML=div.innerHTML;//获取innerHTML
            // alert(innerHTML);
            // div.innerHTML="<input type='text'>";//修改innerHTML
            div.innerHTML +="<input type='text'>";//追加innerHTML内容
        </script>
    </body>
</html> 
3.控制样式:
          1. 修改样式方式一:使用元素的style设置样式
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UUTF-8">
        <title>HTML_DOM</title>
    </head>
    <body>
        <div id="div1">
            div1
        </div>
        <div id="div2">
            div2
        </div>
        <script>
            var div=document.getElementById("div1");
            var innerHTML=div.innerHTML;//获取innerHTML
            // alert(innerHTML);
            // div.innerHTML="<input type='text'>";//修改innerHTML
            div.innerHTML +="<input type='text'>";//追加innerHTML内容
            var div1=document.getElementById("div1");
            div1.onclick=function(){
                //修改样式方式一:使用元素的style设置样式
                div1.style.border="1px solid red";//当我点击后div出现红色样式边框
                div1.style.width="500px";
                //font-size--->fonSize
                div1.style.fontSize="20px";
            }
        </script>
    </body>
</html> 
2.方法二:提前定义好类选择器的样式,通过元素的className属性来设置器class属性值,修改样式:使用className="d2"修改:(说明d2是style设置的class样式)。
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UUTF-8">
        <title>HTML_DOM</title>
        <style>
            .d1{
                border:1px solid red;
                width:100px;
                height:100px;
            }
            .d2{
                border:1px solid blue;
                width:500px;
                height:100px;
            }
        </style>
    </head>
    <body>
        <div id="div1">
            div1
        </div>
        <div id="div2">
            div2
        </div>
        <script>
                 //修改样式方式二:使用元素的style设置样式
                 var div2=document.getElementById("div2");
                 div2.onclick=function(){
                 div2.className="d2";
            }
        </script>
    </body>
</html> 
方法一和二的效果:
                      










