JavaScript笔记 09

目录

01 DOM操作事件的体验

02 获取元素对象的五种方式

03 事件中this指向问题

04循环绑定事件

05 DOM节点对象的常用操作

    06 点亮盒子的案例

07 节点访问关系

08 设置和获取节点内容的属性

09 以上内容的小总结


 

01 DOM操作事件的体验

        js本身是受事件驱动的脚本语言

        什么是事件?

                一系列状态  比如: 点击事件 鼠标离开事件  页面加载事件

        驱动: 驱使程序动起来

        页面元素绑定事件的步骤:

                1.获取页面元素对象

                2.元素对象.on事件名称=匿名函数(js系统提供好了很多事件)

                3.在匿名函数里面定义执行的功能代码

02 获取元素对象的五种方式

        获取页面元素的五种方式:

        1.通过id获取元素对象

                var 变量=document.getElementById('元素id')

        2.通过class获取元素对象  返回的是一个伪数组对象

                var 变量=document.getElementByClassName('标签class属性')

                不能直接拿来当做节点对象操作

                要想使用其中的元素对象,必须通过伪数组[索引值]

                取出里面指定索引值的元素对象再践行操作

        3.通过标签名获取  返回值是伪数组

                var 变量=document.getElementsByTagName('标签名')

        4.通过选择器获取单个元素

                var 变量=document.querySelector('css选择器')

                只能选中单个元素

        5.通过选择器获取多个元素

                var 变量=document.querySelectorAll('选择器')

        伪数组:

                只有索引功能和length属性 但是没有数组的那些常用的函数(push pop shift...)

        循环遍历伪数组:

                for(var i=0;i<伪数组名.length;i++){

                        lis[i].style.backgroundColor='red'

                }

03 事件中this指向问题

        事件源:

        var box=document.getElementById('box');

        var box=document.querySelector('#box')

        console.log(box)

        事件名称 事件驱动函数

                事件源.on事件名称=事件驱动函数(匿名函数)

                box.οnclick=function(){

                        alert('你好')

                }

        在事件当中的this 指向的是当前绑定这个事件的事件源对象 

        也就是本次触发这个事件的事件源

        总结:  谁触发了这个事件 this就指向谁

                

04循环绑定事件

        如果页面多个元素 想要绑定同一个事件 并且事件代码功能也相同,

        那么就可以使用循环遍历的方式绑定.

        var btnArr=document.querySelectorAll('button');

        console.log(btnArr);

        for(var i=0;i<btnArr.length;i++){

                btnArr[i].οnclick=function(){

                        // 这个函数是页面加载时 循环给每一个按钮绑定的事件驱动函数

                        // 只有点击的时候才执行里面的代码

                        // 页面加载时只是绑定了函数

                        // 所以等到函数执行的时候也就是你点击的时候页面早就加载完毕了

                        // 页面加载完毕了 也就以为这这个循环早就结束了 也就是这个循环执行完了

                        // 那么这个 i 变量的值就已经是5了

                        // console.log(btnArr[i]);

                        // btnArr[i].style.backgroundColor='blue'

                        console.log(this);

                        this.style.backgroundColor='blue'

            }

        }

05 DOM节点对象的常用操作

        操作元素的class

        获取:    元素对象.className

        设置: 元素对象.className='新类名1 新类名2...'

                通过className属性改变标签类名  会全部设置上新赋的值 

                如果想要原本的类名 需要在赋值的时候也增加上

        设置行内样式:

                元素.style.css 属性名='属性值'

        

        操作图片标签的src属性: 图片对象.src

        操作元素的title属性: 元素对象.title

        小总结:

                对象.属性   不写等号就是获取

                对象.属性=值  写等号就是设置/修改

    06 点亮盒子的案例
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>*{margin: 0;padding: 0;}nav{height: 40px;line-height: 40px;text-align: center;width: 500px;margin:50px auto;}nav>div{float: left;height: 40px;padding: 0 20px;background-color: hotpink;margin-right: 5px;cursor: pointer;color:#fff;}nav>div.current{background-color: orange;}</style>
</head>
<body><nav><div class="current">首页</div><div>商品页</div><div>购物车页</div><div >个人中心</div><div>联系我们</div></nav><script>// 排他思想// 干掉所有人 留下我自己var divArr=document.getElementsByTagName('div')// console.log(divArr);// 循环绑定鼠标移入事件   onmouseover  鼠标进入事件 只会触发一次for(var i=0;i<divArr.length;i++){// console.log(i);divArr[i].onmouseover=function(){// console.log(111);// this.style.backgroundColor='orange'// 排他思想 干掉所有人for(var i=0;i<divArr.length;i++){divArr[i].className=''}// 留下我自己this.className='current'}}</script>
</body>
</html>

07 节点访问关系

        利用节点与节点之间的关系 找到指定的元素

        获取父节点对象: parentNode

        获取第一个子节点:firstElementChild

        获取最后一个子节点:lastElementChild

        获取上一个兄弟节点:previousElementSibling

        获取下一个兄弟节点:nextElementSibling

        获取所有子节点:

                childNodes

                children(常用)

08 设置和获取节点内容的属性

        元素对象.innerHtml

        元素对象.innerText

                获取时:

                        innerHTML可以获取内部所有的内容包括标签

                        innerText只能后去内部素有的标签内的文本内容 获取不到标签

                设置时:

                        他们两个都能把内部的内容全部清空然后替换成我们赋值的内容

                        如果字符串中带有标签

                                那么innerHTML会把标签渲染出来呈现在页面中

                                innerText不会吧标签渲染出来 只会按照普通字符串的形式展示

09 以上内容的小总结

        元素获取的五种方式:

                1.id 2.className 3.tagName 4.querySelector("选择器") 5.querySelectorAll("选择器")

        this指向问题:

                构造函数中的this指向新创建的对象

                普通函数中的this指向函数的调用者

                元素事件驱动函数中的this指向当前触发事件的那个元素

        循环绑定事件:

                多个元素绑定同一个事件 通过this获取当前触发事件的那个元素对象

        DOM节点的常用操作:

                操作样式:

                        元素对象.style.css属性名=属性值

                        操作class:

                                元素对象.className=''

                操作标签的其他的属性:

                        元素对象.src    title   href

        点亮盒子:

                排他思想

        节点访问关系:

                父节点  parentNode

                第一个子节点:firstElementChild

                最后一个子节点:lastElementChild

                上一个兄弟:previousElementSibling

                下一个兄弟:nextElementSibling

                所有子节点:children   childNodes(包括文本节点)

        元素对象内容:

                innerHTML  

                innerText

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10_MVC

文章目录 JSON常用的JSON解析Jackson的常规使用指定日期格式 MVC设计模式MVC介绍前后端分离案例&#xff08;开发与Json相关接口&#xff09; 三层架构三层架构介绍 JSON JSON&#xff08;JavaScript Object Notation&#xff09; 是一种轻量级的数据交换格式&#xff0c;是存…

JUC并发编程(七)

1、不可变对象 1.1、概念 不可变类是指一旦创建对象实例后&#xff0c;就不能修改该实例的状态。这意味着不可变类的对象是不可修改的&#xff0c;其内部状态在对象创建后不能被更改。不可变类通常具有以下特征&#xff1a; 实例状态不可改变&#xff1a;一旦不可变类的对象被…

x-cmd-pkg | broot - Rust 开发的一个终端文件管理器

简介 broot 是基于 Rust 开发的一个终端文件管理器&#xff0c;它设计用于帮助用户在终端中更轻松地管理文件和目录&#xff0c;使用树状视图探索文件层次结构、操作文件、启动操作以及定义您自己的快捷方式。 同时它还集成了 ls, tree, find, grep, du, fzf 等工具的常用功能…

unordered系列容器OJ

目录 1、unordered系列容器 2、unordered系列容器OJ 1、重复n次的元素 2、两个数组的交集I 3、两个数组的交集II 4、存在重复元素 5、两句话中不常见的单词 1、unordered系列容器 在C标准库中&#xff0c;unordered系列容器是基于哈希表实现的&#xff0c; 用于存储唯一…

Qt之创建向导用户界面QWizard

文章目录 前言一、他是干什么的二、QWizard的使用2.1 基础使用2.2 QWizard API2.3 QWizardPage API总结前言 在Qt应用程序中,有时需要向用户提供一个逐步引导的界面,以帮助他们完成特定任务或设置。为了实现这样的用户体验,Qt提供了一个名为QWizard的类,可以方便地创建向导…

用html实现一个文章图片缩略展示

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文章图片缩略展示</title><link rel"stylesheet" href"./style.css"> </head> <body> <div class&qu…

初始《string》及手搓模拟实现《string》

目录 前言&#xff1a; 为什么学习string类&#xff1f; 标准库中的string类 1. string类对象的常见构造 ​编辑 2. string类对象的容量操作 ​编辑 3. string类对象的访问及遍历操作 4. string类对象的修改操作 5. string类非成员函数 vs和g下string结构的说明 vs下s…

k8s1.28.8版本安装prometheus并持久化数据

本文参考 [k8s安装prometheus并持久化数据_/prometheus-config-reloader:-CSDN博客](https://blog.csdn.net/vic_qxz/article/details/119598466)前置要求: 已经部署了NFS或者其他存储的K8s集群. 这里注意networkpolicies网络策略问题&#xff0c;可以后面删除这个策略&#x…

LangChain使用本地LLM的简单实现

所用模型&#xff1a;stable-code-instruct-3b-Q8_0.gguf 下载链接&#xff1a;bartowski/stable-code-instruct-3b-GGUF Hugging Face 详细内容请查看&#xff1a;Introduction | &#x1f99c;️&#x1f517; Langchain 目录 LangChain 代码示例 LangChain LangChain…

证券市场概述

证券市场 证券市场参与者证券发行市场&#xff08;一级市场&#xff09;证券发行方式&#xff08;按发行对象&#xff09;证券发行方式&#xff08;按有无中介&#xff09;证券交易市场&#xff08;二级市场&#xff09;证券交易所场外交易市场&#xff08;店头市场、柜台市场&…

C# 系统学习(事件与委托 )

在C#中&#xff0c;事件是一种特殊的委托类型&#xff0c;用于通知其他类有某件事发生。事件允许一个类公开某些特定的行为&#xff0c;而订阅者可以在这些行为发生时收到通知。委托则是类型安全的函数指针&#xff0c;可以指向具有匹配签名的方法。 C# 中的事件声明与订阅 事…

再生式收音机填坑记

年前踩坑再生式收音机&#xff0c;还是得找机会把坑填上&#xff0c;最终选定了K8TND的方案&#xff0c;其实与Mr. Kitchen的也基本差不多。电路图如下&#xff1a; 实物图如下&#xff1a; 实际接收效果还不错&#xff0c;但是感觉频段上哪哪都是中国之声&#xff0c;对这种…

CSMM软件能力成熟度是什么?一文读懂!

01、CSMM是什么&#xff1f; CSMM是标准T/CESA 1159-2022《软件过程能力成熟度模型》&#xff08;Software capability maturity model&#xff09;的英文简称&#xff0c;是我国基于国家安全和信息安全背景下&#xff0c;在软件过程管理领域对标CMMI的标准&#xff0c;旨在替…

UE4_碰撞_碰撞蓝图节点——Line Trace For Objects(对象的线条检测)

一、Line Trace For Objects&#xff08;对象的线条检测&#xff09;&#xff1a;沿给定线条执行碰撞检测并返回遭遇的首个命中&#xff0c;这只会找到由Object types指定类型的对象。注意他与Line Trace By Channel(由通道检测线条&#xff09;的区别&#xff0c;一个通过Obje…

React系列之合成事件与事件处理机制

文章目录 React事件处理机制原生事件的事件机制事件代理&#xff08;事件委托&#xff09; 合成事件使用合成事件目的合成事件原生事件区别事件池 原生事件和React事件的执行顺序e.stopPropagation() React17事件机制的修改 React事件处理机制 react 事件机制基本理解&#xf…

时序预测 | Matlab实现CPO-BP冠豪猪算法优化BP神经网络时间序列预测

时序预测 | Matlab实现CPO-BP冠豪猪算法优化BP神经网络时间序列预测 目录 时序预测 | Matlab实现CPO-BP冠豪猪算法优化BP神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现CPO-BP冠豪猪算法优化BP神经网络时间序列预测&#xff08;完整源码…

Linux(CentOS7)安装软件方式(编译安装,yum,rpm)

目录 前言 安装方式 编译安装 下载 解压 安装 创建软链接 yum rpm 前言 在使用 CentOS 安装软件时&#xff0c;发现安装的方式有好几种&#xff0c;有官网下载 tar 包解压&#xff0c;然后自己编译安装的&#xff0c;也有直接通过 yum 命令一键安装的&#xff0c;还有…

力扣刷题Days29-第二题-70.爬楼梯(js)

只有学习&#xff0c;没有自己的思路解题哈哈哈 1&#xff0c;题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 2&#xff0c;代码 这种解法的本质是斐波那契数列 /*** param {number} n* re…

appium辅助自动化工具-- Appium studio

这里我要给大家介绍一款appium辅助自动化测试工具appium studio&#xff0c;你没看错&#xff0c;不是android studio&#xff0c;也不是appium android studio&#xff0c;就是appium studio&#xff01; 下载地址&#xff1a; Appium Studio | Digital.ai Continuous Test…

探究ThreadLocal的魔数0x61c88647和Entry数组

探究ThreadLocal 下面有一个很重要的HASH_INCREMENT,他的值是0x61c88647 public class ThreadLocal<T> {/***ThreadLocals依赖于附加到每个线程的每线程线性探针哈希映射 (thread.threadLocals和inheritableThreadLocals)。ThreadLocal对象充当键&#xff0c;通过threa…