zoukankan      html  css  js  c++  java
  • JavaScript之DOM详解

    java scrip-DOM概念分享

    在java script中有三大核心分别为:javascript语法,DOM,BOM.

    今天分享一下在学习dom后的一些理解,希望大家支持。

    绑定事件

    之前学习过一个鼠标单击事件,onclick

    var btn = document.getElementById("btn");
    //获取网页元素
    btn.onclick = function(){
    //触发事件}
    ____//此处写入发生事件产生的结果
    
    

    以上按里还有另外一种写法,就是将事件处理函数写在网页元素里面。

    <button onclick = "fn1()">点击</button>
    function fn1(){
    //事件的结果
    }
    //这类写法的好处就是不需要在js中重新获取网页元素。
    

    在js中除了上述的绑定事件意外,还可以采用事件监听的形式来经行时间的绑定

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <h1>DOM事件绑定</h1>
    <hr>
    <button id="btn">点击</button>
    </body>
    <script>
        function fn1() {
            alert(123);
        }
        var btn = document.getElementById("btn");
        //获取点击按钮
        btn.addEventListener('click',fn1);
        //绑定监听事件
      
    </script>
    </html>
    
    

    以上案例虽然可以达到和onclick一样的效果,但是通过事件监听可以给一个元素绑定多个事件处理函数,并且触发事件后多个处理函数都会执行

    事件监听并不支持ie9一下,为了完成兼容可以书写条件注释,或者采用attachEvent()方法。
    demo:

    if(btn.addEventlistener){
    btn.addEventlistener("click",fn);
    }else{
    btn.attachEvent("onclick",fn);
    }
    

    当然为了以后方便使用也可以将内容封装成函数:

    function bindEvent(dom,event,fn){
    if(dom.addEventListener){
    dom.addEventListener(event,fn)};
    }
    else if(dom.attachEvent){
     dom.attachEvent("on" + event,fn);
     }else {
     console.log("对不起,您的浏览器不支持。");
      }
     }
    
    

    给一组元素绑定事件,先找到父元素,再通过父元素找到子元素的标签。通过for循环以此对li标签经行附加属性

    ul
    li li
    li li
    li li
    ul
    //投个懒理解下
    var lis = document.getElementById('list').getElementsByTagName('li');
        for(var i=0;i<lis.length;i++){
        //因为获取的li标签是无法单独设置属性
            lis[i].onclick = function (){
            通过for循环,找到对应的键值然后再给每个不同的键值的元素增加属性
                this.style.background = 'red';
            }
        }
    

    节点

    节点,dom中最小的组成单位就是节点,再html中也被称为标签。文档的结构分为父级,子级,兄弟级。从最高的documen顶层节点向下就像一颗树,也被称之为dom树。

    通常标签分为以下几类

    • document :整个文档树的顶层节点。老大哥级别
    • documentType:doctype标签(比如文档声明头)
    • Element:网页的各种html标签;
    • Attribute :网页元素的属性(比如class = “test”)
    • text:标签之间或者标签包含的文本,!!空格换行也算。
    • comment:注释
    • documentFragment:文档的片段

    节点树

    文档树最上层节点为document节点。
    文档第一层有两个节点,一个是文档声明头,(doctpye。。。)第二个就是html顶层容器html标签。html构成了网页树结构的根节点,(root node),其他html标签节点都是他的下级节点。一人之下万人之上。

    根节点之下节点有三种层级关系

    • 父节点关系(parentNode):直接的那个上级节点

    • 子节点(childNode):父节点直接的下级节点。
      //子节点包括选择性子节点(first/lastchildNode)

    • 同级节点关系(silbing):另一个节点的父节点与之相同的节点。

      以上节点的判断类似于css的选择器判断。

  • 相关阅读:
    纯代码frame位移和伸缩
    纯代码-QQ登陆练习
    IOS学习笔记 -- 基础
    LoadRunner接口脚本web_submit_data编写过程中遇到的问题及分享
    Win10系统下安装Oracle服务器和Oracle客户端
    Liunx上传下载和压缩问题分享
    LoadRunner接口工作总结
    分享网上搜到的Oracle中对判定条件where 1=1的正解
    LoadRunner接口测试Error -27225报错解决
    LoadRunner压力测试之Unique Number参数类型、Random Number参数类型浅析
  • 原文地址:https://www.cnblogs.com/wangjiahui/p/10859933.html
Copyright © 2011-2022 走看看