首页 > 其他分享 >DOM

DOM

时间:2022-10-27 17:45:52浏览次数:42  
标签:document console img DOM button let btn

概念

DOM:文档对象模型,是一套标准的编程接口,可以通过DOM来操作html元素

js操作DOM元素

浏览器加载html的时候,会根据html的结构体形成一颗DOM树,dom树上有元素节点、属性节点。

对应的DOM树

document对象

DOM通过document对象为开发者提供大量的接口来操作DOM树

获取节点

getElementById

    <h1 id="title">hello h1</h1>

    <script>
        let h=document.getElementById("title");//返回值是一个dom节点
        console.log(h);//<h1 id="title">hello h1</h1>
    </script>

getElementByClassName

<body>
    <button class="btn">1</button>
    <button class="btn">2</button>
    <button class="btn">3</button>

    <script>
        let btns = document.getElementsByClassName("btn");//返回值是dom节点的一个集合
        console.log(btns);//HTMLCollection(3) [button.btn, button.btn, button.btn]
    </script>
</body>

element.innerHTML/innerText

innerHTML和innerText都能获取和设置document对象的文本内容
innerHTML指的是从对象的起始位置到终止位置的全部内容,包括Html标签。
innerText指的是从起始位置到终止位置的内容,但它去除Html标签。
同时,innerHTML是所有浏览器都支持的,innerText是IE浏览器和chrome 浏览器支持的,Firefox浏览器不支持。
其实,innerHTML是W3C 组织规定的属性;而innerText属性是IE浏览器自己的属性,不过后来的浏览器部分实现这个属性罢了。
innerHTML是符合W3C标准的属性,而innerText只适用于IE浏览器(现在也适应chrome浏览器)
因此尽可能地去使用innerHTML,而少用innerText
如果要输出不含HTML标签的内容,可以使用innerHTML取得包含HTML标签的内容后,再用正则表达式去除HTML标签

  • 获取内容
    <h1 id="title">
        hello h1
        <p>hello p</p>
    </h1>

    <script>
        let h=document.getElementById("title");
        console.log(h.innerHTML);//带标签,如<p>
        console.log(h.innerText);//不带标签
    </script>

  • 设置内容
    <h1 id="title">
        hello h1
        <p>hello p</p>
    </h1>

    <script>
        let h=document.getElementById("title");
        console.log(h.innerHTML);
        console.log(h.innerText);
        h.innerHTML="hello hh1";
        h.innerText="hello hhh1";//两者效果上一致,所以后面的会替换前者的效果
    </script>

document.querySelector&querySelectorAll

getID和getClassName都是旧的方法,现在多采用效率更高的querySelector和querySelectorAll
通过选择器来获取节点

    <h1 id="title">hello h1</h1>
    <button class="btn">1</button>
    <button class="btn">2</button>
    <button class="btn">3</button>

    <script>
        let g1 = document.querySelector("#title");
        let g2 = document.querySelector(".btn");//如果有多个相同的类名,只会选择第一个
        console.log(g1);//<h1 id="title">hello h1</h1>
        console.log(g2);//<button class="btn">1</button>

        let g3 = document.querySelectorAll(".btn");//获取所有符合的节点
        console.log(g3);//NodeList(3) [button.btn, button.btn, button.btn]
    </script>

事件类型

触发某些事件,产生某些效果

点击事件:onclick

点击按钮,弹出弹窗

    <button class="btn">按钮</button>

    <script>
        let g = document.querySelector("button");
        //事件监听函数
        g.onclick = function(){
            alert("hello btn");
        }
    </script>

鼠标移入元素:onmouseenter

    <button class="btn">按钮</button>

    <script>
        let g = document.querySelector("button");
        g.onmouseenter = function(){
            console.log("enter");
        }
    </script>

移入鼠标打印enter

鼠标移出元素:onmouseleave

    <button class="btn">按钮</button>

    <script>
        let g = document.querySelector("button");
        g.onmouseleave = function(){
            console.log("out");
        }
    </script>

移开鼠标打印out

事件设置样式

    <style>
        .box{
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
<body>
    <div class="box"></div>

    <script>
        let g = document.querySelector(".box");

        g.onclick = function(){
            this.style.backgroundColor = "blue";//this是g
        }

        g.onmouseenter = function(){
            this.style.backgroundColor = "yellow";
        }

        g.onmouseleave = function(){
            this.style.backgroundColor = "green";
        }
    </script>
</body>

事件设置属性

  • id、className
    <button class="btn">1</button>

    <script>
        let g = document.querySelector("button");

        g.onclick = function(){
            g.id="btn1";//点击后设置id属性,有就覆盖,没有就添加
            g.className="active";
        }
    </script>

  • 利用className的变化实现样式
    <style>
        .active{
            background-color: red;
        }
    </style>
</head>
<body>
    <button>1</button>
    <button>2</button>
    <button>3</button>
    <script>
        let btnArr = document.querySelectorAll("button");
        for(let i of btnArr){
            i.onclick=function(){
                if(this.className==="active"){
                    this.className="";
                }else{
                    this.className="active";
                }
            }
        }
    </script>

点击对应按钮就会加上类名active(前提是原类名没有active)背景色也会变成红色

如果本来的类名是active,点击后类名就会变为空,背景色变回原样

  • img
    <style>
        img{
            height: 500px;
        }
    </style>
</head>
<body>
    <div>
        <img src="img/keli.jpg" alt="">
    </div>
    <button>1</button>
    <button>2</button>
    <button>3</button>

    <script>
        let img = document.querySelector("img");
        let imgArr = ["img/keli.jpg","img/yae.png","img/jay.jpg"];
        let btns = document.querySelectorAll("button");
        for(let i in btns){//i=0,1,2 遍历按钮数组
            btns[i].onclick=function(){//点击对应按钮切换相应图片
                img.src=imgArr[i];
            }
        }
    </script>



轮播图

3张图,flex布局横向排列,通过hidden隐藏掉超出的图片,通过向左平移实现图片的切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .swiper{
            width: 640px;
            height: 320px;
            overflow: hidden;
            position: relative;
        }

        .img-container{
            width: 1920px;/*容纳3张图片以实现横向排列*/
            height: 320px;
            transition: transform 0.3s;/*切换图片*/
            display: flex;/*消除幽灵空白*/
        }

        .img-container img{
            width: 640px;
            height: 320px;
        }

        .btn-list{
            position: absolute;/*绝对定位抵消隐藏*/
            bottom: 0;
        }
    </style>
</head>
<body>
    <div class="swiper">
        <div class="img-container">
            <img src="img/keli.jpg" alt="">
            <img src="img/yae.png" alt="">
            <img src="img/jay.jpg" alt="">
        </div>
        <div class="btn-list">
            <button>1</button>
            <button>2</button>
            <button>3</button>
        </div>
    </div>
    <script>
        let btn = document.querySelectorAll(".btn-list button");
        let container = document.querySelector(".img-container");
        for(let i in btn){
            btn[i].onclick = function(){
                /*
                0 * 640 = 0
                1 * 640 = 640
                2 * 640 = 1280
                */
                container.style.transform = `translate(${-640*i}px)`;//不同按钮有相应的偏移值
            }
        }
    </script>
</body>
</html>

标签:document,console,img,DOM,button,let,btn
From: https://www.cnblogs.com/ben10044/p/16832772.html

相关文章

  • D. Problem with Random Tests
    传送门题意:给出一个字符串,然后,从这个字符串中取两个子串s1,s2,要求两个字符串的或最大思路:首先,先去s1从第一个非0开始取整段,记录第一个非0的位置为p1,因为或位数......
  • LeetCode_LinkedList_138. Copy List with Random Pointer 复制带随机指针的链表(C++)【
    目录​​一,题目描述​​​​英文描述​​​​中文描述​​​​二,解题思路​​​​三,AC代码​​​​C++​​​​四,解题过程​​​​第一博​​一,题目描述英文描述Alinkedli......
  • HTMLDOM_innerHEML、样式控制
    HTMLDOM_innerHEMLHTMLDOM1.标签体的设置和获取:innerHTML2.使用html元素对象的属性3.控制元素样式使用元素的style属性来设置如://修改样式......
  • 636 自动跳转首页_案例 and 637 DOM概念
    自动跳转首页_案例分析:1.显示页面效果 <p>2.倒计时读秒效果实现2.1定义一个方法,获取span标签,修改span标签体内容,时间--2.2......
  • element表格el-table组件实现虚拟滚动,解决数据量大渲染DOM过多而卡顿问题
    element表格el-table组件实现虚拟滚动,解决数据量大渲染DOM过多而卡顿问题当页面数据过多,前端渲染大量的DOM时,会造成页面卡死问题,使用分页或则懒加载这些方案也无法解决,这......
  • day09 DOM
    DOM的概述DOM是文档对象模型(documentobjectmodel),顾名思义就是用来操作对应的HTML文档的.它是一个遵从文档流的语句,是同步机制的.DOM的分类document是......
  • JS之dom元素和位置有关的属性计算方式
    以下全部属性皆为横向(因为竖向的话只需要把x改为y即可,就不在本文列出) 1.clientWidth:元素内部宽度=width+padding2.offsetWidth:元素内部宽度=width+padding+border+scr......
  • DOM-概述、DOM_Document对象_创建DOM对象、DOM_Node对象
    DOM-概述概念:DocumentObjectModel文档对象模型将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作W3CDOM标准被分......
  • 究竟什么是Shadow DOM?
    shadowdom是什么?顾名思义,shadowdom直译的话就是影子dom,但我更愿把它理解为DOM中的DOM。因为他能够为Web组件中的DOM和CSS提供了封装,实际上是在浏览器渲染文档的时候会......
  • DOM简单学习和事件简单学习
    DOM简单学习DOM简单学习:为了满足案例要求功能:控制html文档的内容代码:获取页面标签(元素)对象 Elementdocument.getElementById("id值"):通过元素的id......