JavaScript的学习笔记

<script src="index.js" defer></script>,defer的作用是延迟加载index.js文件

定义变量

变量的类型分为两大类:基本类型和复合类型

JavaScript是一种弱类型语言,所以没有强类型语言所具有的int,float,char等等,而任何变量的定义都是以var来实现的,只会根据所赋值来确定其类型。

基本类型

基本类型分为五种:数值类型,字符串类型,布尔类型,undefined类型,null类型

var a=0.8;
var b="abcdef";
var c=true;
var d=undefined;//与var d;且不给d赋值是一样的

我们可以使用运算符typeof来查看类型

typeof "John" // 返回 string 
typeof 3.14// 返回 number 
typeof false// 返回 boolean 
typeof [1,2,3,4]// 返回 object 
typeof {name:'John', age:34}// 返回 object

复合类型

复合类型分为:数组类型,对象类型,函数类型

对象类型的访问方式有两种使用.或者对类数组的访问方式。例如

var obj=
{name:"张三",age:29,banks:["工商银行","建设银行"],
}
console.log(obj.banks[0]);
console.log(obj["banks"][0]); //这两种访问方式都可以访问到 工商银行

值得注意的是,第一种访问方式并不是任何条件下都可以正确访问。例如

for(var key in obj)
{console.log(obj.key);// 在这中情况下key只是被obj当作一个类似与name、age这类的值,所以只会输出undefinedconsole.log(obj[key]);// key只是一个字符串,所以是可以的
}

函数变量

命名函数与匿名函数

// 命名函数
function 方法名(参数列表)
{......
}
// 匿名函数
function(参数列表)
{......
}

而匿名函数是没有方法名的,所以他必须当作一个值赋给一个变量,但是命名函数也可以赋给一个变量。

函数的使用

在js中没有函数重载,只有覆盖(根据代码的出现位置,越晚出现的就会覆盖掉越早出现的),而且在使用函数时的参数不是必须的。例如

function test()
{console.log("我是无参函数")
}
function test(a,b)
{console.log("我是有参函数 "+a+","+b)return 8;
}
test()
test(4)
test(4,5)

运行结果:

![[Pasted image 20230827232252.png]]

在使用函数时有两种使用方法:

  1. 函数整体作为值来使用

    var a=test
    console.log(a)
    a(4,5)
    

    运行结果:

    ![[Pasted image 20230827232623.png]]

    setInterval(test,1000) //等同于setInterval("test()",1000)//这个函数的意思是每1000ms执行一次test()
    //setInterval("test(4,5)",1000) 每1000ms执行一次test(4,5)
    

    运行结果:

    ![[Pasted image 20230828135708.png]]

  2. 函数返回值作为值来使用

    var a=test()
    console.log(a)
    

    运行结果:

    ![[Pasted image 20230827233009.png]]

事件

在js中事件就是与人绑定的函数,认为触发函数就叫做事件。事件是具有传播机制的,传播机制的必备条件是元素嵌套以及相同的事件(函数)。

事件的传播机制:

  • 由内到外的冒泡机制(浏览器默认机制)
  • 由外到内的捕获机制

![[Pasted image 20230828141904.png]]

下边是具有嵌套的html

<div class="par" style="width:100px;height:100px;background-color: #2ac"><div class="ch" style="width:50px;height:50px;background-color: pink"></div>
</div>

![[Pasted image 20230828143438.png]]

冒泡机制

var p=document.querySelector(".par")
var c=document.querySelector(".ch")c.onclick=function(){console.log("子级元素触发了")
}
p.onclick=function(){console.log("父级元素触发了")
}

点击粉色区域(子元素)后的运行结果:

![[Pasted image 20230828144044.png]]

捕获机制

var p=document.querySelector(".par")
var c=document.querySelector(".ch")c.addEventListener("click",function(){console.log("子级元素触发了")
},true)
p.addEventListener("click",function(){console.log("父级元素触发了")
},true)

点击粉色区域(子元素)后的运行结果:

![[Pasted image 20230828145411.png]]

在设置捕获机制是使用到了函数addEventListener(event,function,bool),他有三个参数,第一个是事件的种类例如click,mouseenter等等;第二个参数是触发的方法;第三个参数是一个bool值,true表示捕获机制,false表示冒泡机制,如果不写第三个参数,则是undefined会被js当作false处理。

js中也有阻断传播机制设置。event.stopPropagation():调用该方法可以阻止事件在当前元素上继续传播,无论是在捕获阶段还是冒泡阶段。如果事件在捕获阶段触发,调用这个方法会阻止影响子元素。如果事件在冒泡阶段触发,调用这个方法会立即停止冒泡,不会再传播给父元素及其祖先元素。如果在同一个元素上有多个事件处理函数,调用这个方法只会阻止事件传播,但不会影响其他处理函数的执行。例如

stopPropagation(),这个方法是由每一个function的隐藏参数调用的,每一个function都有一个隐藏参数代表方法本身,只需在参数列表中只指明参数然后调用即可。

c.onclick=function(e){e.stopPropagation();console.log("子级元素触发了")
}p.onclick=function(){console.log("父级元素触发了")
}

点击粉色区域(子元素)后的运行结果:

在这里插入图片描述

dom 增删改查

  1. 以id查找 getElmentById(),只会获取复合条件的第一个元素
  2. 以class查找getElemnetsByClass(),会获取复合条件的所有元素,存到一个数组之中
  3. 以元素名称来查找元素们 getElementsByTagName() 会获取符合条件的所有元素
  4. 以选择器来查找元素 querySelector() 只会获取符合条件的第一个元素
  5. 以选择器来查找元素们 querySelectorA11() 会获取符合条件的所有元素
  6. 根据元素之间的关系查找
    1. partentNode,parentElemnet 当前节点的父亲节点
    2. childNodes 当前节点的所有孩子节点(元素节点和文本节点,可以通过NodeType属性来筛选)
    3. children 当前节点的所有孩子节点(只包含元素节点)
    4. previousSibling 获取当前节点的上一个节点,注意文本节点的存在
    5. previousElementSibling 获取当前节点的上一个元素节点
    6. nextSibling 获取当前节点的下一个节点,注意文本节点的存在
    7. nextElementSibling 获取当前节点的下一个元素节点
    8. firstChild 获取当前节点的第一个孩子节点,注意文本节点的存在
    9. firstElementChild 获取当前节点的第一个元素孩子节点
    10. lastChild 获取当前节点的最后一个孩子节点,注意文本节点的存在
    11. lastElementChild 获取当前节点的最后一个元素孩子节点

removeChild(TargetNode),删除其孩子节点TargetNode

删除改节点时,只需找到他的父亲节点即可。例如

x.parentNode.rmoveChild(x);//就是删除x元素

修改内容

修改 | 获取,要修改内容就要先获取内容所以修改和获取本质是一样的。

  1. innerHTML(非表单元素,包含html元素)
  2. innerText(非表单内容,只包含纯文本 )
  3. value(表单控件)

例如:

    <div class="d1" style="background:#2ac">innerHTML</div><div class="d2" style="background:#2ac">innerText</div>

![[Pasted image 20230829094930.png]]

document.onclick=function(){  //点击页面任意位置var d1=document.querySelector(".d1")d1.innerHTML="<h3>123</h3>"var d2=document.querySelector(".d2")d2.innerText="<h3>123</h3>"
}

![[Pasted image 20230829095227.png]]

修改属性

修改属性 setAttribute() 有两个参数第一个是属性的名称,第二个是属性的值;获取属性getAttribute()

修改各个标签的属性,可以通过console.dir()来查看标签的各种属性。以上两种方法对于原生属性以及自定义属性都可以使用。而通过直接用.来获取并修改只适用于原生属性(例如value,class等)

增加元素是分为两步,第一步是创建或复制元素,第二步是添加到已有元素中

创建或复制元素。创建元素createElement(),复制元素cloneNode(boolean) true 深度复制,false 浅复制

添加到已有元素中。追加parentNode.appendChild(newnode),插入parentNode.insertBefore(newNode,refNode)。都是作为parentNode的孩子节点

定时器

周期定时器 setInterval(function,time) 延时定时器 setTimeout(function,time)。第一个参数是函数,第二个参数是时间间隔,单位时ms。

他们都有一个返回值,这个返回值就是每一次定时器的标志,可以通过标志来停止定时器。例如

var timer=setInterval(function(){...
},1000)
clearInterval(timer) //停止定时器 clearTimeout(timer)

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

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

相关文章

VScode通过ssh连接github

通过ssh连接github 1.生成公钥和私钥2.设置config文件3.配置ssh免密登录4.远程仓库初始化 1.生成公钥和私钥 首先选择一个文件夹&#xff0c;右击 git bash here&#xff0c;在命令行输入命令&#xff0c;按下三次回车生成一个**.ssh文件夹**&#xff0c;一般在用户的user根目…

AI浪潮下,新闻媒体的新变革与记者职业的未来发展

中国媒体经历了从口口相传到报纸、再到电视&#xff0c;最后到互联网自媒体的演变过程。传统报业在新媒体冲击下面临着存亡的挑战。 中国媒体的演变概括如下&#xff1a; 19世纪初&#xff1a;主要依靠口口相传和阅读报纸获取信息&#xff1b;20世纪&#xff1a;电视逐渐取代报…

MyBatis:查询与连接池

一、查询 1、多表查询 尽量避免使用多表查询&#xff0c;尤其是对性能要求较高的项目。因为多表查询必然会导致性能变低。 例如&#xff1a;select *from ta运行需要10ms&#xff0c;select *from tb 运行也需要10s。但是&#xff0c;select *from ta left join tb on ta.xx…

zabbix监控vmware esxi

一、zabbix服务端配置 修改zabbix_server.conf配置文件 vim /etc/zabbix/zabbix_server.conf #######zabbix_server.conf底部第二行开始添加下面配置######## StartVMwareCollectors5 #StartVMwareCollectors - 预先启动Vmware collector收集器实例的数量。此值取决于要监控的…

GEE显示研究区sentinel-2每年可用影像

第一次使用GEE&#xff0c;用了别人的代码&#xff0c;想查看每年影像可用数量&#xff0c;但是老是报错&#xff0c;说是null geometry&#xff0c;之前我是用GAMMA软件导出的kml文件&#xff0c;后面在arcgis自己勾画了sho文件&#xff0c;线类型&#xff0c;然后我就在想会不…

MySQL进阶-----索引的结构与分类

目录 前言 一、认识索引 二、索引结构 1.概述 2. 二叉树 3 .B-Tree 4.BTree 5.Hash 三、索引的分类 1 .索引分类 2 .聚集索引&二级索引 前言 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程(持续更新)

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛B题 解题全流程&#xff08;持续更新&#xff09; -----基于多模态特征融合的图像文本检索 一、写在前面&#xff1a; ​ 本题的全部资料打包为“全家桶”&#xff0c; “全家桶”包含&#xff1a;模型数据、全套代码、训练好的模…

OpenLayers基础教程——使用WebGLPoints加载海量点数据

1、前言 最近遇到一个问题&#xff1a;如何在OpenLayers中高效加载海量的场强点&#xff1f;由于项目中的一些要求&#xff0c;不能使用聚合的方法加载。一番搜索之后发现&#xff1a;OpenLayers中有一个WebGLPoints类&#xff0c;使用该类可以轻松应对几十万的数据量&#xf…

汽车后视镜反射率检测光纤光谱仪:安全驾驶的守护神

在汽车的日常使用中&#xff0c;后视镜扮演着至关重要的角色。它不仅帮助驾驶员观察车辆后方的情况&#xff0c;还确保了行车的安全性。然而&#xff0c;由于各种原因&#xff0c;后视镜的反射率可能会降低&#xff0c;从而影响到驾驶员的视线范围和判断能力。为了解决这一问题…

windows允许指定IP段访问本地端口

虚拟机内部应用有时候需要访问windows的一些端口&#xff0c;例如数据库或Redis等&#xff0c;默认情况下&#xff0c;需关闭windows上的防火墙才可正常访问。本文通过在防火墙设置允许指定IP段进行访问来处理&#xff0c;不用每次操作都关闭防火墙。 入站规则-》新建规则 完成…

软考高项总结:第16章采购管理(二)

一、实施采购 1、实施采购过程的数据流向图 2、实施采购ITO 3、采购文档,是用于达成法律协议的各种书面文件,可包括: (1)招标文件:包括发给卖方的信息邀请书、建议邀请书、报价邀请书,或其他文件,以便卖方编制应答文件。 (2)采购工作说明书:向卖方清晰地说明目标…

掌握了这个分析方法,实现传输线阻抗5%的加工公差不是梦!

高速先生成员--黄刚 传输线阻抗控制对系统性能的重要性不言而喻&#xff0c;每一家的PCB加工板厂都在往能控制更严格的阻抗公差这个目标而不断努力。但是我们也知道&#xff0c;传输线阻抗的控制公差其实会受到PCB结构本身的因素影响&#xff0c;就好像下面这张PCB差分线的切片…

Nextcloud激活被锁用户

Nextcloud激活用户 如果docker下没有安装sudo 和 vim执行下面命令&#xff0c;安装了则跳过 #进入docker内部 #更新apt-get apt-get update #安装sudo apt-get install sudo #安装vim apt-get install vim 修改下面文件内容&#xff0c;否则执行occ命令可能报错 进入上面查询…

【zlm】问题记录:chrome更新引起的拉不出webrtc; 证书校验引起的放几秒中断

目录 chrome更新引起的拉不出webrtc 证书校验引起的放几秒中断 chrome更新引起的拉不出webrtc 【zlm】最新的chrome版本中的报错&#xff1a; 我有个问题event.js:8 [RTCPusherPlayer] DOMException: Failed to execute setRemoteDescription on RTCPeerConnection: Failed …

产品推荐 | 基于EV10AQ190的多通道 最大5Gsps 10bit AD FMC子卡

一、板卡概述 FMC147是一个四通道多模式AD子卡&#xff0c;完全符合VITA 57.1标准。该卡提供4个10位ADC通道&#xff0c;支持采样4、2、或1通道,采样速率为5Gsps、2.5 GSPS、1.25Gsps选择。 采样时钟可以通过一个同轴电缆连接外部提供&#xff0c;或由内部时钟源&#xff08;可…

学习笔记Day15:Shell脚本编程

Shell脚本编程 Linux系统环境 Linux系统的4个主要部分&#xff1a;内核、shell、文件系统和应用程序。 内核是操作系统的核心&#xff0c;决定系统性能和稳定性shell &#xff1a;一种应用程序&#xff0c;是用户和内核交互操作的接口&#xff0c;是套在内核外的壳&#xff…

C++函数模板详解(结合代码)

目录 1. 模板概念 2. 函数模板语法 3. 函数模板注意事项 4. 函数模板案例 5. 普通函数与函数模板的区别 6. 普通函数与函数模板的调用规则 7. 模板的局限性 1. 模板概念 在C中&#xff0c;模板是一种通用的程序设计工具&#xff0c;它允许我们处理多种数据类型而不是固…

Symbol 类型必知必会

一. Symbol的概念 Symbol 是 JavaScript 中的一种新的基本数据类型&#xff0c;引入自 ECMAScript 6&#xff08;ES6&#xff09;标准。它是一种不可变且唯一的数据类型&#xff0c;可以用来创建独一无二的键&#xff08;key&#xff09;。 Symbol 的创建方式是通过调用全局的…

测试开发工程师(QA)职业到底需要干些什么?part4:安全QA

安全测试开发QA工作的主要目标是确保软件、应用程序或系统在安全方面的健壮性和可靠性。以下是安全测试开发QA工作中的一些常见任务和职责&#xff1a; 安全测试计划和策略&#xff1a;安全测试开发QA团队负责制定全面的安全测试计划和策略。他们会评估应用程序或系统的安全需求…

【优选算法】专题1 -- 双指针 -- 复写0

前言&#xff1a; 补充一下前文没有写到的双指针入门知识&#xff1a;专题1 -- 双指针 -- 移动零 目录 基础入门知识&#xff1a; 1. 复写零&#xff08;easy&#xff09; 1. 题⽬链接&#xff1a;1089.复习0 - 力扣&#xff08;LeetCode&#xff09; 2. 题⽬描述&#xff…