JavaWeb学习总结:JavaScript(BOM和DOM)

BOM

1,概念:Browser Object Model 浏览器对象模型

  • 将浏览器的各个组成部分封装成对象

组成

1,Window:窗口对象

方法:

  • alert():显示带有一段消息和一个确认按钮的警告框
  • confirm():显示带有一段消息以及确认按钮和取消按钮的对话框
    • 如果用户点击确定按钮,则方法返回true
    • 如果用户点击取消按钮,则方法返回false
  • prompt():显示可提示用户输入的对话框
    • 返回值,获取用户输入的值
  • close():关闭浏览器窗口
    • 谁调用关谁
  • open():打开一个新的浏览器窗口
    • 返回新的Window对象

open()和close()


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Window对象title>
head>
<body>
    <input id="openBtn" type="button" value="打开窗口">
    <input id="closeBtn" type="button" value="关闭窗口">
    <script>
            var openBtn = document.getElementById("openBtn");
            var newWindow;
            openBtn.onclick = function(){
                //打开新窗口
                newWindow = open("http://www.baidu.com");
            }

            var closeBtn = document.getElementById("closeBtn");
            closeBtn.onclick = function(){
                //打开新窗口
                newWindow.close();
            }
    script>
body>
html>
<script>
        //alert("hello window");
        window.alert("hello a");

        var flag = confirm("123");
        if(flag){
            //退出操作
            alert("欢迎再次光临");
        }else{
            //提示
            alert("aaaaaaa");
        }
        //输入框
        var result = prompt("请输入:");
        alert(result);
    </script>

定时器有关方法
1,setTimeout():在指定的毫秒数后调用函数或计算表达式

  • 参数:(setInterval()一样)
    • 1,js代码或者方法对象
    • 2,毫秒值
    • 返回值:唯一标识,用于取消定时器。
      2,clearTimeout():取消由setTimeout方法设置的timeout
      3,setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式
      4,clearInterval():取消由setInterval设置的timeout

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>定时器title>
head>
<body>
    <script>
        //一次性定时器
        //setTimeout("fun();",2000);
        //var id = setTimeout(fun,2000);
        //取消定时器
        //clearTimeout(id);
        function fun(){
            alert('boom~~~');
        }
        //循环定时器
        var id = setInterval(fun,2000);
        //取消循环定时器
        clearInterval(id);
    script>
body>
html>

案例:轮播图


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>轮播图title>
head>
<body>
    <img id="img" src="img/banner_1.jpg" width="100%">

    <script>
        /*
            分析:
            1,在页面上使用img标签展示
            2,定义一个方法,修改图片对象的src属性
            3,定义一个定时器,每隔3秒调用一次
        */

        var number = 1;
        //修改图片src属性
        function fun(){
            number++;
            //判断number是否大于3
            if(number > 3){
                number = 1;
            }
            document.getElementById("img");
            img.src = "img/banner_"+number+".jpg";

        }

        //定义定时器
        setInterval(fun,3000);
    script>

body>
html>

Window对象属性:

  • 1,获取其他BOM的对象:
    • history:
     //获取history
    var h1 = window.history;
    var h2 = history;
    alert(h1);
    alert(h2);
    
    • location
    • Navigator
    • Screen
  • 2,获取DOM对象
    • document :var openBtn = window.document.getElementById("openBtn");

Location:地址栏对象

1,创建(获取)

window.location
或者
location

2,方法

  • reload():重新加载当前文档。刷新

3,属性

  • href:设置或返回完整的URL。

示例1:


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Location对象title>
head>
<body>
    <input type="button" id="btn" value="刷新">
    <input type="button" id="goBaidu" value="百度">
    <script>
        //reload方法:定义一个按钮,点击按钮刷新当前页面
        //获取按钮
        var btn = document.getElementById("btn");
        //绑定单击事件
        btn.onclick = function(){
            //刷新页面
            location.reload();
        }
        //获取href
        //var href = location.href;
        //alert(href);

        //点击按钮,访问百度
        var goBaidu = document.getElementById("goBaidu");
        //绑定单击事件
        goBaidu.onclick = function(){
            location.href = "http://www.baidu.com";
        }
    script>
body>
html>

示例2:自动跳转首页


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自动跳转title>

    <style>
        p{
            text-align:center;
        }
        span{
            color:red;
        }
    style>
head>
<body>
    <p>
        <span id="time">5span>秒之后,自动跳转到首页
    p>
    <script>

       /*
            分析:
                1,显示页面效果,p标签
                2,倒计时读秒效果(定时器)
                    * 定义一个方法,获取span标签内容,时间
                    * 定义一个定时器,1秒执行一次该方法
                3,在方法中判断,时间小于等于0,跳转
       */

       //倒计时读秒效果
       var second = 5
       var time = document.getElementById("time");

       function showTime(){
            second--;
            //判断时间
            if(second<=0){
                //跳转到百度首页
                location.href = "http://www.baidu.com";
            }

            time.innerHTML = second + "";
       }
       //设置定时器
       setInterval(showTime,1000);
    script>
body>
html>

DOM

概念:Document Object Model 文档对象模型

  • 将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作
    JavaWeb学习总结:JavaScript(BOM和DOM)_第1张图片

核心 DOM

Document:文档对象
1,创建(获取):在html dom模型中可以使用window对象来获取

window.document
或者
document

2,方法:

  • 1,获取Element对象:
    • getElementById(): 根据id属性值获取元素对象。id属性值一般唯一。
    • getElementsByTagName():根据元素的名称获取元素对象们。返回值是一个数组
    • getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组
    • getElementsByName():根据name属性值获取元素对象们。返回值是一个数组

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document对象title>
head>
<body>
<div id="div1">div1div>
<div id="div2">div2div>
<div id="div3">div3div>
<div class="cls1">div4div>
<div class="cls1">div5div>
<input type="text" name="username">
<script>
    //2.根据元素名称获取元素对象们。返回值是一个数组
    var divs = document.getElementsByTagName("div");
    //alert(divs.length);
    
    //3.根据Class属性值获取元素对象们。返回值是一个数组
    var div_cls = document.getElementsByClassName("cls1");
    // alert(div_cls.length);
    
    //4.根据name属性值获取元素对象们。返回值是一个数组
    var ele_username = document.getElementsByName("username");
    //alert(ele_username.length);

    var table = document.createElement("table");
    alert(table);
script>
body>
html>
  • 2,创建其他DOM对象
createAttribute(name)
createComment()
createElement()
createTextNode()

Element:元素对象

  • 1,获取/创建:通过document来获取和创建
  • 方法:
    • removeAttribute():删除属性
    • setAttribute():设置属性
      示例:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Element对象title>
head>
<body>
<a>点我试一试a>
<input type="button" id="btn_set" value="设置属性">
<input type="button" id="btn_remove" value="删除属性">

<script>
    //获取btn
    var btn_set =document.getElementById("btn_set");
    btn_set.onclick = function(){
        //1.获取a标签
        var element_a = document.getElementsByTagName("a")[0];
        element_a.setAttribute("href","https://www.baidu.com");
    }


    //获取btn
    var btn_remove =document.getElementById("btn_remove");
    btn_remove.onclick = function(){
        //1.获取a标签
        var element_a = document.getElementsByTagName("a")[0];
        element_a.removeAttribute("href");
    }

script>
body>
html>

Node:节点对象
特点:所有DOM对象都可以被认为是一个节点
方法:

  • CURD DOM树:
    • appendChild():向节点的子节点列表的结尾添加新的子节点
    • removeChild():删除(并返回)当前节点的指定子节点
    • replaceChild():用新节点替换一个子节点
  • 属性:
    • parentNode:返回节点的父节点

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Node对象title>

    <style>
        div{
            border:1px solid red;
        }
        #div1{
            width:200px;
            height:200px;
        }
        #div2{
            width:100px;
            height:100px;
        }

        #div3{
            width:20px;
            height:20px;
        }

    style>
head>
<body>
    <div id="div1">
        <div id="div2">
            div2
        div>
        div1
    div>

    
    
    
       
        

    <a href="javascript:void(0);" id="del">删除子节点a>
    <a href="javascript:void(0);" id="add">添加子节点a>
    
    <script>
        //获取超链接
        var element_a = document.getElementById("del");
        //绑定单击事件
        element_a.onclick = function(){
            var div1 = document.getElementById("div1");
            var div2 = document.getElementById("div2");
            div1.removeChild(div2);
        }

        //获取超链接
        var element_add = document.getElementById("add");
        //绑定单击事件
        element_add.onclick = function(){
            var div1 = document.getElementById("div1");
            //给div1添加子节点
            //创建div节点
            var div3 = document.createElement("div");
            div3.setAttribute("id","div3");
            div1.appendChild(div3);
        }
    script>
body>
html>

动态表格(对比使用innerHTML添加的方式):


<html lang="en">
<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" placeholder="请输入编号">
    <input type="text" id="name" placeholder="请输入姓名">
    <input type="text" id="gender" placeholder="请输入性别">
    <input type="button" value="添加" id="btn_add" >

div>
<table>
    <caption>学生信息表caption>
    <tr>
        <th>编号th>
        <th>姓名th>
        <th>性别th>
        <th>操作th>
    tr>
    <tr>
        <td>1td>
        <td>Jsptd>
        <td>td>
        <td><a href="javascript:void(0);" onclick="delTr(this);">删除a>td>
    tr>
    <tr>
        <td>2td>
        <td>Jptd>
        <td>td>
        <td><a href="javascript:void(0);" onclick="delTr(this);">删除a>td>
    tr>
    <tr>
        <td>3td>
        <td>Jstd>
        <td>td>
        <td><a href="javascript:void(0);" onclick="delTr(this);">删除a>td>
    tr>
table>
<script>
    <!--//获取按钮id-->
    <!--document.getElementById("btn_add").onclick = function(){-->
        <!--//获取文本框内容-->
        <!--var id = document.getElementById("id").value;-->
        <!--var name = document.getElementById("name").value;-->
        <!--var gender = document.getElementById("gender").value;-->

        <!--//创建td,赋值td的标签体-->

        <!--var td_id = document.createElement("td");-->
        <!--var text_id = document.createTextNode(id);-->
        <!--td_id.appendChild(text_id);-->

        <!--var td_name = document.createElement("td");-->
        <!--var text_name = document.createTextNode(name);-->
        <!--td_name.appendChild(text_name);-->

        <!--var td_gender = document.createElement("td");-->
        <!--var text_gender = document.createTextNode(gender);-->
        <!--td_gender.appendChild(text_gender);-->

        <!--//a标签的td-->
        <!--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);-->


        <!--//创建tr-->
        <!--var tr = document.createElement("tr");-->
        <!--//添加td到tr中-->
        <!--tr.appendChild(td_id);-->
        <!--tr.appendChild(td_name);-->
        <!--tr.appendChild(td_gender);-->
        <!--tr.appendChild(td_a);-->

        <!--//获取table-->
        <!--var table = document.getElementsByTagName("table")[0];-->
        <!--table.appendChild(tr);-->
        

        //使用innerHTML来添加
        document.getElementById("btn_add").onclick = function(){
            //获取文本框的内容
            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 += "\n" +
                "        "+id+"\n" +
                "        "+name+"\n" +
                "        "+gender+"\n" +
                "        删除\n" +
                "    ";
       }
    //添加删除功能
    function delTr(obj){
        var table = obj.parentNode.parentNode.parentNode;
        var tr = obj.parentNode.parentNode;
        table.removeChild(tr);
    }
script>
body>
html>

HTML DOM

1,标签体的设置和获取:innerHTML
2,使用html元素对象的属性
3,控制样式

  • 使用元素style属性来设置
var div1 = document.getElementById("div1");
        div1.onclick = function(){
            //修改样式
            div1.style.border = "1px solid red";
            div1.style.width = "200px";
            div1.style.fontSize = "20px";
        }
  • 提前定义好类选择器的样式,通过元素的className属性来设置其class属性值

事件

功能:某些组件被执行了某些操作后,触发了某些代码的执行。
如何绑定事件:

  • 1,直接在html标签上,指定事件的属性,属性值就是js代码
    • 事件:onclick----单击事件
  • 2,通过js获取元素对象,指定事件属性,设置一个函数

示例:电灯开关


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>电灯开关title>
head>
<body>
    <img id="light" src="img/off.gif">
    <script>
        //获取图片对象
        var light = document.getElementById("light");
        var flag = false; //代表灯是灭的,off状态

        //绑定单击事件

        light.onclick = function(){
            if(flag){ //判断如果灯是开的,则灭掉
                light.src = "img/off.gif";
                flag = false;
            }else{  //如果灯是灭的,则打开
                light.src = "img/on.gif";
                flag = true;
            }
        }
    script>
body>
html>

常见事件参考资料


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>常见事件title>
    <script>
        /*
        常见的事件:
            1. 点击事件:
                1. onclick:单击事件
                2. ondblclick:双击事件
            2. 焦点事件
                1. onblur:失去焦点。
                    * 一般用于表单验证
                2. onfocus:元素获得焦点。

            3. 加载事件:
                1. onload:一张页面或一幅图像完成加载。

            4. 鼠标事件:
                1. onmousedown	鼠标按钮被按下。
                    * 定义方法时,定义一个形参,接受event对象。
                    * event对象的button属性可以获取鼠标按钮键被点击了。
                2. onmouseup	鼠标按键被松开。
                3. onmousemove	鼠标被移动。
                4. onmouseover	鼠标移到某元素之上。
                5. onmouseout	鼠标从某元素移开。


            5. 键盘事件:
                1. onkeydown	某个键盘按键被按下。
                2. onkeyup		某个键盘按键被松开。
                3. onkeypress	某个键盘按键被按下并松开。

            6. 选择和改变
                1. onchange	域的内容被改变。
                2. onselect	文本被选中。

            7. 表单事件:
                1. onsubmit	确认按钮被点击。
                    * 可以阻止表单的提交
                        * 方法返回false则表单被阻止提交。
                2. onreset	重置按钮被点击。
         */

        //2.加载完成事件  onload
        window.onload = function(){
            /*//1.失去焦点事件
            document.getElementById("username").onblur = function(){
                alert("失去焦点了...");
            }*/
            /*//3.绑定鼠标移动到元素之上事件
            document.getElementById("username").onmouseover = function(){
                alert("鼠标来了....");
            }*/

           /* //3.绑定鼠标点击事件
            document.getElementById("username").onmousedown = function(event){
               // alert("鼠标点击了....");
                alert(event.button);
            }*/

          /*  document.getElementById("username").onkeydown = function(event){
                // alert("鼠标点击了....");
               // alert(event.button);
                if(event.keyCode == 13){
                    alert("提交表单");
                }

            }*/

           /* document.getElementById("username").onchange = function(event){

                alert("改变了...")

            }

            document.getElementById("city").onchange = function(event){

                alert("改变了...")

            }*/

            /*document.getElementById("form").onsubmit = function(){
                //校验用户名格式是否正确
                var flag = false;


                return flag;
            }*/
        }

        function checkForm(){
            return true;
        }


    script>

head>
<body>





<form action="#" id="form" onclick="return  checkForm();">
    <input name="username" id="username">

    <select id="city">
        <option>--请选择--option>
        <option>北京option>
        <option>上海option>
        <option>西安option>
    select>
    <input type="submit" value="提交">
form>
body>
html>

案列1:表格全选


<html lang="en">
<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:white;
        }
        .over{
            background-color:pink;
        }


    style>

    <script>
        /*
            分析:
                获取所有的checkbox
                遍历cb,设置每一个cb的状态为选中  checked

        */
        //1,在页面加载完后绑定事件
        window.onload = function(){
            //2,给全选按钮绑定单击事件
            document.getElementById("selectAll").onclick = function(){
                //全选,获取所有的checkbox
                var cbs = document.getElementsByName("cb");
                //遍历
                for (var i = 0;i < cbs.length;i++){
                    //设置每一个cb的状态为选中,checked
                    cbs[i].checked = true;
                }
            }

            document.getElementById("unSelectAll").onclick = function(){
                //全不选,获取所有的checkbox
                var cbs = document.getElementsByName("cb");
                //遍历
                for (var i = 0;i < cbs.length;i++){
                    //设置每一个cb的状态为未选中,checked
                    cbs[i].checked = false;
                }
            }

            document.getElementById("selectRev").onclick = function(){
                //反选,获取所有的checkbox
                var cbs = document.getElementsByName("cb");
                //遍历
                for (var i = 0;i < cbs.length;i++){
                    //设置每一个cb的状态为相反
                    cbs[i].checked = !cbs[i].checked;
                }
            }

            document.getElementById("firstCb").onclick = function(){
                //第一个cb点击
                var cbs = document.getElementsByName("cb");
                //获取第一个cb
                //alert(this);

                //遍历
                for (var i = 0;i < cbs.length;i++){
                    //设置每一个cb的状态和第一个cb的状态一样
                    cbs[i].checked = this.checked;
                }
            }

            //给所有tr绑定鼠标移动元素之上和移出元素之上事件
            var trs = document.getElementsByTagName("tr");
            //遍历
            for (var i=0;i < trs.length;i++){
                //绑定鼠标移动元素之上事件
                trs[i].onmouseover = function(){
                    this.className = "over";
                }

                //绑定鼠标移出元素之上事件
                trs[i].onmouseout = function(){
                    this.className = "out";
                }
            }
        }

    script>
    
head>
<body>

<table>
    <caption>学生信息表caption>
    <tr>
        <th><input type="checkbox" name="cb" id="firstCb">th>
        <th>编号th>
        <th>姓名th>
        <th>性别th>
        <th>操作th>
    tr>

    <tr>
        <td><input type="checkbox"  name="cb" >td>
        <td>1td>
        <td>令狐冲td>
        <td>td>
        <td><a href="javascript:void(0);">删除a>td>
    tr>

    <tr>
        <td><input type="checkbox"  name="cb" >td>
        <td>2td>
        <td>任我行td>
        <td>td>
        <td><a href="javascript:void(0);">删除a>td>
    tr>

    <tr>
        <td><input type="checkbox"  name="cb" >td>
        <td>3td>
        <td>岳不群td>
        <td>Jsptd>
        <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>

你可能感兴趣的:(JavaWeb)