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,一经查实,立即删除!

相关文章

阿里云linux服务器数据盘待初始化

如果您的阿里云Linux服务器数据盘已经购买但未进行初始化和格式化&#xff0c;您可以按照以下步骤进行操作&#xff1a; 查看数据盘信息&#xff1a; 使用fdisk -l命令查看当前所有磁盘的信息&#xff0c;识别未初始化的数据盘设备名称&#xff0c;如/dev/xvdb。分区数据盘&am…

Spring 实现 OAuth2 授权之解决方案

Spring Security OAuth2 - 已经废弃的项目 早期的Spring 使用 Spring Security OAuth2 实现 OAuth 2.0 的认证服务器和资源服务器。OAuth2是一个授权框架,它允许第三方应用获取有限的访问权限,而无需获取用户的账号和密码等敏感信息。通过这种方式,OAuth2协议实现了安全的用…

java语言实现树莓派4b下的超远程高精度电子秤

通常情况下,Java语言基于jvm虚拟机,垃圾回收,代码优化等机制,无法直接通过Java语言来操控硬件,获取传感器数据,本文做个折中,通过编写c语言代码,编译为.so文件,Java使用jni调用.so文件的方式,springboot操作Java方法,来编写一套超远程高精度电子秤的代码。总成本:2…

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收集器实例的数量。此值取决于要监控的…

android13实现切换导航模式功能

支持android13以上系统&#xff0c;需要系统签名。 public class NavigationHelper {/*** 设置导航模式** param context* param mode GESTURAL&#xff1a;手势 TWOBUTTON&#xff1a;二按钮 THREEBUTTON&#xff1a;三按钮*/public static void setNavigationMode(Contex…

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

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

android各种软件下载

Android Studio 历史版本下载地址&#xff1a;https://developer.android.google.cn/studio/archive 拉到网页底部&#xff0c;点击 I agree to the terms 按钮 buildTools历史版本下载地址&#xff1a;https://androidsdkmanager.azurewebsites.net/build_tools.html

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

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

进制转换(Python)

一、把10进制数转换成N进制数 将10进制数转换为N进制数通常遵循以下步骤&#xff1a; 将10进制数除以N&#xff0c;记录下商和余数。将商作为新的被除数重复步骤1&#xff0c;直到商为0。将得到的余数逆序排列&#xff0c;这就是所求的N进制数。 假设我们要将10进制数29转换为N…

【第十二届“泰迪杯”数据挖掘挑战赛】【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;从而影响到驾驶员的视线范围和判断能力。为了解决这一问题…

7-Zip、7z、7za.exe 命令行用法(加解压zip文件)

文章目录 7-Zip什么是7z使用7-Zip、7z的场景 常用命令7za.exe 命令行用法 7-Zip 什么是7z 主页&#xff1a;http://www.7-zip.org/ 7z&#xff0c;全称7-Zip&#xff0c; 是一款开源软件。是目前公认的压缩比例最大的压缩解压软件。 7-Zip is free software with open sour…

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

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

ASR工业化语音模型总结

1、wenet模型&#xff1a;WeNet语音识别实战-CSDN博客 git地址&#xff1a;GitHub - wenet-e2e/wenet: Production First and Production Ready End-to-End Speech Recognition Toolkit 生产应用方式为:使用pytorch训练&#xff0c;使用c部署。

日常总结:出现报错信息

上述代码报如下错误FATAL EXCEPTION: main Process: com.ear.myapplication, PID: 2173 java.lang.RuntimeException: com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: For input string: "2024-02-26 13:55:38"at com.ear.ams.ui.funct…

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

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