zoukankan      html  css  js  c++  java
  • WEB前端 -- DOM

    DOM描述

        文档对象模型(document object model,DOM) 是一种用于HTML和XML文档的编程接口,它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式,我们最关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。

    一、查找元素

    1.1 直接查找

    document.getElementById         根据ID获取一个标签
    document.getElementByName       根据name属性获取标签集合
    document.getElementByClassName  根据class属性获取标签集合
    document.getElementByTagName    根据标签名获取标签集合

    1.2 间接查找

        parentNode              查找父节点
        childNodes              查找所有子节点
        firstChild              查找第一个子节点
        lastChild               查找最后一个子节点
        nextSibling             查找下一个兄弟节点
        previousSibling         查找上一个兄弟节点
        
        parentElement           查找父节点标签元素
        children                查找所有子标签
        firstElementChild       查找第一个子标签元素
        lastElementChild        查找最后一个子标签元素
        nextElementSibling      查找下一个兄弟标签元素
        previousElementSibling  查找上一个兄弟标签    

    二、操作

    2.1  内容

        innerText
        innerHTML
        value
            input       value获取当前标签的中的值
            select      获取选中的value值(selectedIndex)
            textarea    value获取当前标签中的值

    2.2 属性

        setAttribute        创建属性
        removeAttribute     删除属性
        attributes          获取所有属性

    2.3 Class 操作

        className                // 获取所有类名
        classList.remove(cls)    // 删除指定类
        classList.add(cls)       // 添加类

    2.4 标签并添加

    2.4.1 创建标签

       a.字符串方式
            function AddEle1() {
                //创建一个标签
                var tag = "<p><input type='text /'></p>";
                //将标签添加到i1里面
                document.getElementById('i1').insertAdjacentHTML("beforeEnd",tag);
            }
            //注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'
        b.对象方式
            function AddEle2() {
                //创建一个input标签
                var tag = document.createElement('input');
                //指定input标签的格式
                tag.setAttribute('type','text');
                //设置input标签的样式
                tag.style.fontSize = '16px';
                tag.style.color = 'red';
                //创建一个p标签,将input标签包含在p标签中
                var p = document.createElement('p')
                p.appendChild(tag)
                //将标签添加到i1中
                document.getElementById('i1').appendChild(p);
            }

    2.5 样式操作

        className               获取标签有哪些class样式      
        classLiss               将获取出来的标签列表的形式显示
            classList.add       添加一个class样式
            classList.remove    删除一个class样式
        
        obj.style.color = red;  以对象的方式设置样式    

    2.6 位置操作

       总文档高度
        document.documentElement.offsetHeight
          
        当前文档占屏幕高度
        document.documentElement.clientHeight
          
        自身高度
        tag.offsetHeight
          
        距离上级定位高度
        tag.offsetTop
          
        父定位标签
        tag.offsetParent
          
        滚动高度
        tag.scrollTop
         
        /*
            clientHeight -> 可见区域:height + padding
            clientTop    -> border高度
            offsetHeight -> 可见区域:height + padding + border
            offsetTop    -> 上级定位标签的高度
            scrollHeight -> 全文高:height + padding
            scrollTop    -> 滚动高度
            特别的:
                document.documentElement代指文档根节点
        */

    2.7 提交表单

        document.getElementById('form').submit()

    2.8 其他操作

        console.log                 输出框
        alert                       弹出框
        confirm                     确认框
          
        // URL和刷新
        location.href               获取URL
        location.href = "url"       重定向
        location.reload()           重新加载
          
        // 定时器
        setInterval                 多次定时器
        clearInterval               清除多次定时器
        setTimeout                  单次定时器
        clearTimeout                清除单次定时器

    2.9 事件与词法分析

    2.9.1 DOM事件:

           

    58面试题:行为,样式,结构 相分离的页面?
                行为:JavaScript
                样式:CSS
                结构:HTML
                this:谁调用这个函数,这个this就指向谁。
                onmouseover:鼠标在上面
                onmouseout:鼠标移动开
            绑定事件两种方式:
                a.直接标签绑定 onclick = 'xxx()'
                b.先获取Dom对象,然后进行绑定
                    document.getElementById('xxx').onclick
                c.第三种方式绑定
                     mydiv.addEventListener('click',function(){console.log('aaa')},false)
                     事件的模型:
                         false:是冒泡模型
                         true:表示捕捉模型
                         ps:如果遇到多层的时候,就会用到事件模型,如果为true的时候,就是从最顶层往下触发,如果为false的时候,就是从最底层往下触发。
                         
            this当前触发事件的标签
                a. 第一种绑定方式
                    <input type = 'button' onclick='Clickon(this)'>
                    function Clickon(self){
                        //self 当前点击的标签
                    }
                b.第二种方法绑定
                    <input id = 'i1' type = 'button'>
                    document.getElementById('i1').onclick = function(){
                        //this 代指当前点击的标签
                    }

    2.9.2 词法分析

        function t1(age){
            console.log(age);
            var age = 27;
            console.age(age);
            function age(){}
            console.age(age);
        }
        t1(3);
    =============结果===============
        age(){} //声明表达式
        27
        27
    ================================
        分析
            active object ===> AO
                1.形式参数
                2.局部变量
                3.函数声明表达式
                
                1、形式参数
                    AO.age = undefined
                    AO.age=3;
                2、局部变量
                    AO.age = undefined
                3、函数声明表达式
                    AO.age = function()
        
        ps:在处理这样的程序时(当时不会这样写,只是举例),传进来的形参就会被函数的声明表达式给优先覆盖,覆盖后var age = 27;就是第二个打印了,而第三个就是这个表达式也没有被执行,因此还是27。
        

    事件如图所示

       

  • 相关阅读:
    微信小程序swiper个性化定制
    php脚本巧用正则批量替换函数参数
    Phpstorm中添加xdebug调试工具。
    apache服务器禁止浏览目录文件
    mysql_connect()函数使用报错
    composer创建新项目报错
    安利一个简单的零配置的命令行http服务器(http-server)
    Laravel笔记之tinker和时间函数
    即时通信2
    即时通信1
  • 原文地址:https://www.cnblogs.com/cxcx/p/6543981.html
Copyright © 2011-2022 走看看