1.BOM-获取元素(获取元素、修改属性)

web Api基本认知

作用:通过JS去操作html页面和浏览器(实现浏览器中的某些功能)
分类:
DOM(网页):Document Object Model(文档对象模型)
BOM(浏览器):Borwser Object Model(浏览器对象模型)

DOM

DOM树

将网页中标签的关系以树状结构表现出来
在这里插入图片描述

DOM对象

浏览器根据html标签生成的JS对象
a)所有的标签属性都可以在这个对象上面找到
b)修改这个对象的属性会自动映射到标签身上
DOM核心思想:把网页内容当做对象来处理

document对象

a)是DOM里提供的一个对象
b)它提供的属性和方法都是用来访问和操作网页内容的
c)网页所有内容都在document里面

获取DOM对象

querySelector(‘选择器’)

    <div>
        <ul>
            <li></li>
        </ul>
    </div>
    <script>
        //获取页面中的标签语法:
        //a) document.querySelector('CSS选择器')  //注意,参数就是一个字符串,字符串就是各种css选择器
        let res = document.querySelector('div')
        // b)有返回值:返回的结果就是当前标签(标签对象)
        console.log(res)
        let res2 = document.querySelector(' div ul li') //通过后代选择器获取了li标签
        console.log(res2)
    </script>

在这里插入图片描述

querySelectorAll
    <div>文字1</div>
    <div>文字2</div>
    <div>文字3</div>
    <div>文字4</div>

    <script>

        let res = document.querySelector('div')   //querySelector只能获取满足条件的第一个标签
        console.log(res)

        //document.querySelectorAll('css选择器')  //可以获取到所有满足条件的标签  #id .class是css选择器
        let res2 = document.querySelectorAll('div')  //得到的是一个伪数组(伪数组也是一个数组,但是不能使用数组方法)
        console.log(res2) //数组中每一个值都是标签对象
        console.log(res2[1])

    </script>

在这里插入图片描述
如何界定返回的结果是伪数组呢?如果返回的结果没有Array就是伪数组
伪数组不能使用数组中的方法,但是伪数组依然可以使用for循环遍历,因为for循环不是数组中的方法

其他获取DOM元素的方法(了解)
   <div id="one" class="test1">文字1</div>
    <div id="two" class="test2">文字2</div>
    <div id="three">文字3</div>
    <div class="test1">文字4</div>

    <script>

        //  1.其他方式获取标签
        // a)通过标签的id获取标签对象
        // 总结:因为标签的id唯一,所以通过getElementById()只能获取一个标签
        const div = document.getElementById('one')
        console.log(div)
        //b)通过标签的名字获取标签对象
        // document.getElementsByTagName('标签名')
        console.log(document.getElementsByTagName('div'))  //得到一个伪数组
        // c)通过标签类名获取标签
        // document.getElementsByClassName('类名')//类名前面不能加点,加点就变成了类选择器
        let res = document.getElementsByClassName('test1')
        console.log(res)

    </script>

在这里插入图片描述

操作元素内容

获取标签中的内容

  <div id="one" class="test1">
        <p>文字1</p>
    </div>
    <div id="two" class="test2">文字2</div>
    <div id="three">文字3</div>
    <div class="test1">文字4</div>
    <div id="five"></div>
    <script>
        //获取标签中的内容
        // 赋值语法:
        // DOM标签对象.innerHTML=值
        // DOM标签对象.innerText=值

        //获取值语法:获取标签中的内容
        // DOM标签对象.innerHTML;
        // DOM标签对象.innerText;
        const div = document.querySelector('#one')
        //   二者的区别:
        //a) 如果标签内只有纯粹的文字,则innerHTML和innerText没有任何区别
        // b)如果标签中有文字+html标签,则innerHTML既可以获取文字也可以获取对应的HTML标签
        console.log(div.innerHTML)
        console.log(div.innerText)

        //给标签设置文字内容,会覆盖掉标签内原来的内容
        div.innerHTML = '呵呵呵呵'
        console.log(div.innerHTML)  //非纯文本标签也覆盖掉了
        div.innerHTML = '<h1>呵呵呵呵</h1>'  //innerHTML中的标签页会被渲染上去,而innerText的标签会被当成纯文本渲染


    </script>

在这里插入图片描述

操作元素属性

操作img的src属性

    <img src="../image/1.jpg" alt="">

    <script>
        // 操作图片标签中的src属性
        // a)获取图片的src属性
        // 语法:DOM标签对象.src
        const img = document.querySelector('img')
        let res = img.src //获得的是绝对路径
        console.log(res)
        // b)给图片标签设置src属性
        // 语法:DOM标签对象.src=值;
        img.src = '../image/2.jpg'


操作标签的样式属性

    <div>
    </div>
    <script>
        //操作标签的样式属性
        //1.行内式   //本质上通过操作标签的style属性实现
        //2.外联式  //本质都是通过选择器实现的
        //3.内嵌式  //本质都是通过选择器实现的

        //通过操作标签的style属性实现给标签设置样式的
        //语法:DOM标签对象.style.css属性=值

        let div = document.querySelector('div')
        div.style.backgroundColor = 'red'
        div.style.border = '2px solid blue'
        //通过行内样式一次可以给标签加若干标签属性,单独设置即可
        //style也是一个对象。那么style中有哪些属性我们才可以用 。可以通过console.log(div.style)查阅


    </script>

在这里插入图片描述

操作标签的类样式

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            height: 200px;
            width: 200px;
            background-color: red;
            border: 5px solid blue;
            border-radius: 50%;
        }
    </style>
</head>

<body>
    <div>
    </div>
    <script>
        // 1.操作标签的类样式
        // 语法:DOM标签对象.className='类名'

        // 代码演示
        // 1.定义一个样式
        // 2.获取div标签
        let div = document.querySelector('div')
        // 3.给div标签设置类样式
        div.className = 'box'


        // 通过className操作标签样式总结
        // a)如何给标签添加多个类名?只要在类命中加上空格       div.className = 'box  bd  w'
    	//b)通过className操作标签类名的时候,会覆盖标签原来的类名
    	//c)如果不希望覆盖原来的类名,将原来的类名再次添加
    	//d)className设置的值必须是类名,不能加点
	
	//操作类样式终级写法(推荐写法):
	//添加类名:DOM标签对象.classList.add('类名');//不会覆盖原来的类名
	//删除类名:DOM标签对象.classList.remove('类名')
	//切换类名:DOM标签对象.classList.toggle('类名')
	//类似开关,如果没有点击加上,如果有该类名,点击删除
	//判断是否包含类名:DOM标签对象.classList.contains('类名')

    </script>
</body>

</html>

在这里插入图片描述

定时器-间歇函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/437591.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[c++] c++ 中的顺序(构造,析构,初始化列表,继承)

对象构造的时候&#xff0c;对象成员变量的初始化顺序是什么样的 &#xff1f; 派生类构造的时候&#xff0c;先构造基类还是先构造派生类 &#xff1f; 构造函数中的初始化列表&#xff0c;初始化的顺序是列表的顺序吗 &#xff1f; 析构的时候&#xff0c;析构的顺序是什么…

评估需求优先级的方法

Kano模型&#xff1a; 1.前言 在大量的需求需要进行迭代时&#xff0c;由于时间、人力、财力等相关因素干扰&#xff0c;无法在有限的时间内容对所有的需求进行满足&#xff0c;此时需要我们对需求进行优先级的排列。最大化的合理的提高有限资源的使用。 在常见的产品优先级…

vcomp140.dll丢失如何修复,5种修复方法轻松搞定vcomp140.dll问题

vcomp140.dll文件的丢失可能会引发一系列系统运行与软件功能上的问题。具体来说&#xff0c;这个动态链接库文件是Visual C Redistributable的一部分&#xff0c;对于许多基于此环境开发的应用程序至关重要。一旦缺失&#xff0c;可能会导致部分应用程序无法正常启动或运行&…

代码随想录训练营第39天 | LeetCode 62.不同路径、​​​​​​LeetCode 63. 不同路径 II

LeetCode 62.不同路径 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;动态规划中如何初始化很重要&#xff01;| LeetCode&#xff1a;62.不同路径_哔哩哔哩_bilibili 思路 代码如下&#xff1a; ​​​​​​LeetCode 63. 不同路径 II 文章讲解…

Java定时调度

在Java应用程序中&#xff0c;定时调度是一项重要的任务。它允许你安排代码执行的时间&#xff0c;以便在将来的某个时刻自动执行任务。Java提供了多种方式来实现定时调度&#xff0c;其中最常用的是Java的Timer和ScheduledExecutorService。 在本教程中&#xff0c;我们将学习…

基于C/S架构的在线阅读器

项目简介 本项目实现了用户的基本阅读功能。项目内容涉及到IO&#xff0c;网络编程&#xff0c;C&#xff0c;QT等知识点。本次项目服务器搭建在ubuntu上&#xff0c;客户端ui在QT中实现&#xff0c;客户端和服务器使用套接字通信。 一、基本功能展示 &#xff08;1&#xff…

开发利器——C语言必备实用第三方库

​ 对于广大C语言开发者来说&#xff0c;缺乏类似C STL和Boost的库会让开发受制于基础库的匮乏&#xff0c;也因此导致了开发效率的骤降。这也使得例如libevent这类事件库&#xff08;基础组件库&#xff09;一时间大红大紫。 今天&#xff0c;码哥给大家带来一款基础库&#…

【开源物联网平台】FastBee认证方式和MQTT主题设计

&#x1f308; 个人主页&#xff1a;帐篷Li &#x1f525; 系列专栏&#xff1a;FastBee物联网开源项目 &#x1f4aa;&#x1f3fb; 专注于简单&#xff0c;易用&#xff0c;可拓展&#xff0c;低成本商业化的AIOT物联网解决方案 目录 一、接入步骤 1.1 设备认证 1.2 设备交…

思维题(蓝桥杯 填空题 C++)

目录 题目一&#xff1a; ​编辑 代码&#xff1a; 题目二&#xff1a; 代码&#xff1a; 题目三&#xff1a; 代码&#xff1a; 题目四&#xff1a; 代码&#xff1a; 题目五&#xff1a; 代码&#xff1a; 题目六&#xff1a; 代码七&#xff1a; 题目八&#x…

Unity Samples和帧动画的问题

拖动序列帧图片和自己创建clip的帧率不同 我今天在创建帧动画的时候用了两种方式第一种是直接拖动序列帧图片到Hierachy&#xff0c;然后生成的第二种是这样我发现两者播放的动画速率不一样最后查了半天查不到原因。最后发现是Samples的原因&#xff0c;而且Unity把Samples这个…

自动化测试框架、Python面向对象以及POM设计模型简介

1 自动化测试框架概述 所谓的框架其实就是一个解决问题的思维&#xff0c;前言中描述的诸多问题如果得到解决&#xff0c;自然而然这种得到良好解决的东西它就可以称之为一个框架&#xff0c;只是这个框架用来解决如何组织开展自动化测试。一个典型的自动化测试框架一般包括测…

市场复盘总结 20240307

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 89% 最常用的…

[OpenCv]频域处理

目录 前言 一、频域变换 1.傅里叶变换 2.代码实现 二、频域中图像处理 1.理解数字图片的频谱 2.频域图像处理步骤 3.使用低通滤波器实现图像平滑 4.使用高通滤波器实现图像锐化 三、总结 前言 数字图像处理的方法有两大类&#xff1a;一种是空间域处理法&#xff0c;…

【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag)

一、功能名词简介和显示规则 Alpha Tag&#xff1a;运营商名称标识符&#xff0c;也是用于标识运营商的一个名称。客户需求描述常用名词&#xff0c;对开发而言都是SPN/PLMN功能模块的内容&#xff0c;状态栏左上角的运营商名称显示。 SPN相关文章&#xff1a; 【笔记】SPN和…

nyist_acm 个人积分赛1(部分题解会补充)

Mirrored String II 看到题解说是马拉车算法&#xff0c;我赛时并没想到&#xff08;好吧其实我是比赛完才知道有马拉车这个算法&#xff09; 因为字符串的长度只有1000&#xff0c;直接暴力跑其实就可以了&#xff0c;但是要注意的是&#xff1b;回文串有俩种形式&#xff0c…

nginx部署前端工程替代方案gateway

nginx部署前端工程替代方案gateway 有市场要求部署的前端vue工程不使用nginx中间件。想弄国产替代的东方通之类的&#xff0c;公司没有购买该产品&#xff0c;我参考了网上的一些java网关框架&#xff0c;springcloud组件&#xff1a;gateway实现代替。 注意后台都是用java编…

shadertoy 游戏《来自星尘》摇杆复刻

正确的做法应该是上 noise 而不是叠加 sin 波&#xff0c;不过如果不想麻烦的话叠波还是一个不错的选择&#xff1a;整体效果如下&#xff0c;已经非常形似 直接上链接&#xff1a;Shader - Shadertoy BETA float radiusScale 0.9; float variation(vec2 v1, vec2 v2, float …

据说这是最细滴,Python接口自动化测试数据驱动DDT使用实战,有这一篇就完全足够了

前言 环境准备 首先&#xff0c;需要安装ddt模块 pip install ddt调用时标准格式 在类下面如下写上&#xff1a;ddt.ddt 在调用的方法下面需要写上&#xff1a;ddt.data(需要传入的多组数据) DDT简单介绍 名称&#xff1a; Data-Driven Tests&#xff0c;数据驱动测试。 作用…

深入理解Servlet

目录&#xff1a; ServletWeb开发历史Servlet简介Servlet技术特点Servlet在应用程序中的位置Tomcat运行过程Servlet继承结构Servlet生命周期Servlet处理请求的原理Servlet的作用HttpServletRequest对象HttpServletResponse对象ServletContext对象ServletConfig对象Cookie对象与…

Keepalived实验

一、 LVSKeepalived 实验&#xff1a;7-1为主&#xff1b; 7-2为备&#xff1b; 7-3和7-4为后端服务器 1.关闭防火墙和selinux [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 02.配置主设备7-1 1.安装ipvsadm和keepalived [rootlocalhost ~]#…