DOM事件操作

一、JavaScript的组成:

JavaScript基础分为三个部分:

    • ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。

    • DOM:文档对象模型,操作网页上的元素的API。比如让盒子移动、变色、轮播图等。

    • BOM:浏览器对象模型,操作浏览器部分功能的API。比如让浏览器自动滚动。

二、事件:

ps: JS 就是以事件驱动为核心的一门语言.

事件的三要素:   事件源、事件、事件驱动程序:

 

     事件源:引发后续事件的html标签。

 

 

     事件:js已经定义好了(见下图)。

事件名 说明
onclick 鼠标单击
ondblclick 鼠标双击
onkeyup 按下并释放键盘上的一个键时触发
onchange 文本内容或下拉菜单中的选项发生改变
onfocus 获得焦点, 表示文本框等获得鼠标光标
onblur 失去焦点, 表示文本框等失去鼠标光标
onmouseover 鼠标悬停, 即鼠标停留在图片等的上方
onmouseout 鼠标移出, 即离开图片等所在的区域
onload 网页文档加载事件
onunload 关闭网页时
onsubmit 表单提交事件

onreset

重置表单时.

 

     事件驱动程序:对样式和html的操作。也就是DOM。

代码书写步骤如下:(重要)

    • (1)获取事件源:document.getElementById(“box”); //类似与ios语言的 UIButton *adBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    • (2)绑定事件: 事件源box.事件onclick = function(){ 事件驱动程序 };

    • (3)书写事件驱动程序:关于DOM的操作

 1、获取事件源的方式(DOM节点的获取):

        获取事件源的常见方式如下:

var div1 = document.getElementById("box1");      //方式一:通过id获取单个标签
 
var arr1 = document.getElementsByTagName("div1");     //方式二:通过 标签名 获得 标签数组,所以有s
 
var arr2 = document.getElementsByClassName("hehe");  //方式三:通过 类名 获得 标签数组,所以有s

    2、绑定事件的方式:

方式一:直接绑定匿名函数

前端 之 JavaScript 之DOM: DOM事件操作;  介绍;  相关案例
<div  ></div>

<script type="text/javascript">
    var div1 = document.getElementById("box1");
    //绑定事件的第一种方式
    div1.onclick = function () {
        alert("我是弹出的内容");
    }
</script>
前端 之 JavaScript 之DOM: DOM事件操作;  介绍;  相关案例

 

方式二:先单独定义函数,再绑定

前端 之 JavaScript 之DOM: DOM事件操作;  介绍;  相关案例
 <div  ></div>

<script type="text/javascript">
    var div1 = document.getElementById("box1");
    //绑定事件的第二种方式
    div1.onclick = fn;   //注意,这里是fn,不是fn()。fn()指的是返回值。
    //单独定义函数
    function fn() {
        alert("我是弹出的内容");
    }
</script>
前端 之 JavaScript 之DOM: DOM事件操作;  介绍;  相关案例

注意上方代码的注释。绑定的时候,是写fn,不是写fn()。fn代表的是整个函数,而fn()代表的是返回值。

 

方式三:行内绑定

前端 之 JavaScript 之DOM: DOM事件操作;  介绍;  相关案例
<!--行内绑定-->
<div ></div>

<script type="text/javascript">

    function fn() {
        alert("我是弹出的内容");
    }

</script>
前端 之 JavaScript 之DOM: DOM事件操作;  介绍;  相关案例

注意第一行代码,绑定时,是写的"fn()",不是写的"fn"。因为绑定的这段代码不是写在js代码里的,而是被识别成了字符串

    3、事件驱动程序:

我们在上面是拿alert举例,不仅如此,我们还可以操作标签的属性和样式。举例如下:

前端 之 JavaScript 之DOM: DOM事件操作;  介绍;  相关案例
  <style>
        #box {
            width: 100px;
            height: 100px;
            background-color: pink;
            cursor: pointer;
        }
    </style>
</head>

<body>

<div  ></div>

<script type="text/javascript">
    var oDiv = document.getElementById("box");
    //点击鼠标时,原本粉色的div变大了,背景变红了
    oDiv.onclick = function () {
        oDiv.style.width = "200px";   //属性值要写引号
        oDiv.style.height = "200px";
        oDiv.style.backgroundColor = "red";   //属性名是backgroundColor,不是background-Color
    }
</script>
前端 之 JavaScript 之DOM: DOM事件操作;  介绍;  相关案例

上方代码的注意事项:

    • 在js里写属性值时,要用引号
    • 在js里写属性名时,是backgroundColor,不是CSS里面的background-Color。记得所有的像css属性的text-*,line-*、backgroun-*等在js中都写成驼峰

onload事件:

当页面加载(文本和图片)完毕的时候,触发onload事件。

举例:

<script type="text/javascript">
    window.onload = function () {
        console.log("小马哥");  //等页面加载完毕时,打印字符串
    }
</script>

有一点我们要知道:js的加载是和html同步加载的。因此,如果使用元素在定义元素之前,容易报错。这个时候,onload事件就能派上用场了,我们可以把使用元素的代码放在onload里,就能保证这段代码是最后执行。

建议是:整个页面上所有元素加载完毕在执行js内容。所以,window.onload可以预防使用标签在定义标签之前。

  事件案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        *{
            padding: 0;
            margin: 0;
        }
        .top-banner{
            /*position: relative;*/
            background-color: rgb(230, 15, 82);
        }
        .top-banner .w{
            width: 1190px;
            position: relative;
            margin: 0 auto;
        }
        .top-banner .banner{
            display: block;
            width: 100%;
            height: 80px;
            background: url('./close.jpg') no-repeat center 0;
        }
        .top-banner .close{
            position: absolute;
            right: 0;
            top:0;
            text-decoration: none;
            color: white;    
            width: 20px;
            height: 20px;
            line-height: 20px;
            text-align: center;    
        }
        .hide{
            display: none;
        }

    </style>
</head>
<body>
    <div class="top-banner" >
        <div class="w">
            <a href="#" class="banner"></a>
            <a href="#" class="close" >x</a>
        </div>
    </div>
    <script type="text/javascript">
        // /需求:点击案例,隐藏盒子。
            //思路:点击a链接,让top-banner这个盒子隐藏起来(加隐藏类名)。

        window.onload  = function(){
            // /1.获取事件源和相关元素
            var closeBanner = document.getElementById('closeBanner');
            var topBanner = document.getElementById('topBanner');
            //2.绑定事件
            closeBanner.onclick = function(){
                //3.书写事件驱动程序
                        //类控制
                //topBanner.className += ' hide';//保留原类名,添加新类名
                //topBanner.className = 'hide';
                //替换旧类名
                topBanner.style.display = 'none';
            }
        }
    </script>

    
</body>
</html>
1、京东顶部广告栏关闭

相关文章: