关于DOM的事件操作

JavaScript的组成

三部分:

  • ECMAScript: JavaScript的语法标准,包括变量,表达式,运算符,函数,if语句,for语句
  • DOM: 文档对象模型,操作网页上元素的API,比如让盒子移动,变色,轮播图等
  • BOM: 浏览器对象模型,操作浏览器部分功能的API,比如让浏览器自动滚动

事件

JS是以事件驱动为核心的一门语言

事件三要素

事件源,事件,事件驱动程序

比如,我用手去按开关,灯亮了。这件事情里,事件源是:手。事件是:按开关。事件驱动程序是:灯的开和关。

再比如,网页上弹出一个广告,我点击右上角的X,广告就关闭了。这件事情里,事件源是:X。事件是:onclick。事件驱动程序是:广告关闭了

于是我们可以总结出:谁引发的后续事件,谁就是事件源

总结如下:

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

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

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

因此,代码书写要分三步走:

1. 获取事件源

document.getElementById(“box”);

2. 绑定事件

box.onclick = function(){ 事件驱动程序 };
//事件源.事件

3. 书写事件驱动程序:关于DOM的操作(业务逻辑)

具体代码实例:

<div id="box" class="box">
        <div id="child">

        </div>
    </div>
    <script type="text/javascript">
        //1.获取事件源
        var div = document.getElementById("box");
        //2.绑定事件
        div.onclick = function () {
            //3.书写业务逻辑
            alert("我是弹出的内容");
        }

常见事件

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

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

绑定事件的方式

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

<div id="box" class="box">
        <div id="child">

        </div>
   </div>
    <script type="text/javascript">
        //1.获取事件源
        var div = document.getElementById("box");
        //2.绑定事件
        div.onclick = function () {
            //3.书写业务逻辑
            alert("我是弹出的内容");
        }

    </script>

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

<div id="box1" ></div>

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

方式三:行内绑定

<!--行内绑定--> 
<div id="box1" onclick="fn()"></div> 
<script type="text/javascript"> 
    function fn() { 
        alert("我是弹出的内容"); 
} 
</script>    

  

事件驱动程序

<style>
   #box {
     width: 100px;
     height: 100px;
     background-color: pink;
     cursor: pointer;
        }
</style>
</head>

<body>

<div id="box" ></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>

注意事项:

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

onload事件

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

<script type="text/javascript">
    window.onload = function () {
        console.log("哎哟不错哦,我是周杰伦");  //等页面加载完毕时,打印字符串
    }
    </script>

  

 

posted @ 2018-09-26 16:37  张大仙er  阅读(233)  评论(0编辑  收藏  举报