JavaScript(ES5) 入门
01-简介

1)JavaScript 发展史
2)JavaScript 特点
- 解释性语言:JavaScript代码可以直接在浏览器中运行,无需编译。
- 动态类型:变量可以随时更改其数据类型。
- 面向对象:支持对象和继承。
- 事件驱动:响应用户操作,如点击、输入等事件。
- 跨平台:可以在不同的操作系统和设备上运行。
3)JavaScript 应用场景
- 网页交互:如表单验证、动态内容更新、动画效果等。
- 服务器端开发:如Node.js。
- 移动应用开发:如React Native、Ionic。
- 桌面应用开发:如Electron。
02-js第一个程序
1)什么是JavaScript?
2)第一个程序
<script type="text/javascript">alert("你好,JavaScript");</script>
3)细节
<!-- 将test.js文件中的内容,引入到html中并执行 --><script type="text/javascript" src="test.js"></script>
4)常用方法



03-js语法基础
1)变量
var c=999;var b=888;//在js中可以重复定义//后边定义的变量可以替换前边定义的变量
var aa=1;console.log(typeof aa);
2)关键字和保留字
3)标识符命名规范
4)数据类型
let num = 100; // 数字let str = "Hello"; // 字符串let isTrue = true; // 布尔值let arr = [1, 2, 3]; // 数组let obj = {a: 1, b: 2}; // 对象let undef; // 未定义let nul = null; // 空值
var s='字符串';var f="字符串";var d='""';var d="''";//单双引号嵌套:外部使用单引号,内部使用双引号;外部使用双引号,内部使用单引号。
5)数据类型转换
var s="123";console.log("s="+s+"; type="+typeof s);//将字符串转换为数字s=s-0;s=s*1;s=s/1;console.log("s="+s+"; type="+typeof s);//结果为123 类型是number
var ss="444";//将字符串转换为数字ss=parseInt(ss);console.log("ss="+ss+"; type="+typeof ss);//结果为444 类型是numbervar x=2.343123;//取整x=parseInt(x);console.log("x="+x);//结果为2 类型是numberparseFloat(x): 将字符串转换为小数var ss="12.3212";//将字符串转换为小数ss=parseFloat(ss);console.log("ss="+ss+"; type="+typeof ss);//结果为12.3212 类型是number若x无法转换为数字,返回值NaNvar ss="dsad";//将字符串转换为小数ss=parseFloat(ss);console.log("ss="+ss+"; type="+typeof ss);//结果为NaN数字转字符串[1] 隐式类型转换字符串和任何其他类型做拼接运算,结果都是字符串2 + "";var n=2;//数字转换为字符串n=n+"";console.log("n="+n+"; type="+typeof n);//结果为2 类型是String[2] 显式类型转换调用数字的toString方法var n=2;//数字转换为字符串n=n.toString();console.log("n="+n+"; type="+typeof n);//结果为2 类型是String//在js里面所有的东西都是对象,包括这个数字也是对象
6)运算符
04-流程控制
1)流程控制的分类
2)顺序执行结构
3)选择执行结构
1.if结构
if(条件) {// 代码块}
if(条件) {// if 代码块} else {// else 代码块}
if(条件1) { // 代码块1 }else if(条件2) { //代码块2 }else if(条件3) { //代码块3 }...else if(条件n) { //代码块n }else {}
2.switch结构
switch(变量) {case 情况:break;case 情况:break;case 情况:break;...default:break;}
<script type="text/javascript">var day = 1;switch (day) {case 0 :document.write('星期日');break;case 1 :document.write('星期一');break;case 2 :document.write('星期二');break;case 3 :document.write('星期三');break;case 4 :document.write('星期四');break;case 5 :document.write('星期五');break;case 6 :document.write('星期六');break;default:document.write('数字不满足要求');}</script>
4)循环结构
1.for循环
for(循环变量初始化 1;循环条件 2 ;循环变量改变 3) {循环体 4}

2.while循环
循环变量初始化 1;while(循环条件 2) {循环体 3循环变量改变 4}

<script type="text/javascript">//求1--100的和var sum = 0;var i = 1;while (i <= 100) {sum += i;i++;}document.write("1--100的和是" + sum + "");document.write("i是" + i);</script>
3.do-while循环
循环变量初始化;do {循环体;循环变量的改变;} while(循环条件);do-while 循环和while循环区别?do - while 先执行再判断,至少执行一次while 先判断再执行<script type="text/javascript">//求1--100的和var sum = 0;var i = 1;do {sum += i;i++;} while (i <= 100)document.write("1--100的和是" + sum + "");document.write("i是" + i);</script>
4.退出循环结构
05-错误处理





06-函数和数组
1)函数
function 函数名称(参数1,参数2,...,参数n) {// 函数体return 值;}
// 定义无参无返回值的函数 add// 定义: 在堆空间开辟了一块内存,存储相关的代码// 注意: function 和 函数名称之间没有任何关键字function add() {// 求1-100的和var s = 0;for (var i = 1; i <= 100; i++) {s = s + i;}console.log(s);}//调用: 将堆中的代码获取出来,放到栈空间中执行// 函数名称(); () : 含义就是调用add();

// 定义有参函数// 注意: 参数直接写参数名,不需要任何关键字修饰// 形式参数: 简称形参,只有含义没有值// a 和 b 就是形参,代表加法开始和结束function add2( a, b) {var s = 0;for (var i = a; i <= b; i++) {s = s + i;}console.log("s = " + s);}// 调用函数: 函数名称(值,值,...,值);// 实参: 实际参数// 参数传递: 调用时会将实参的值传递给形参,然后形参就有实际的值,然后开始执行函数中代码add2(1,50);
// 定义有返回值的函数function add3(a , b) {var s = 0;// 代表程序的结束; 可以用在函数执行的规则性验证// a 和 b 必须都是数字if(typeof a != "number" || typeof b != "number") {return ; // 程序结束,默认返回 undefined}// a 一定比 b 小if(a > b) {return ;// 程序结束,默认返回 undefined}for (var i = a; i <= b; i++) {s = s + i;}return s;// 将s的值返回给调用者}// 调用函数: var 变量 = 函数名称(值,值,...,值);var ret = add3(1,2);alert("ret = " + ret);
2)全局变量和局部变量

3)数组
var arr =new Array(12,23,123,2,3);console.log(arr);var arr=[12,23,123,2,3];console.log(arr);var arr=[];//空数组
// 数组的长度可变arr[0]=111;arr[1]=12;//通过下标取值var r=arr[10];console.log("r="+r);
// 获取数组长度console.log("数组长度 = " + arr.length);// 数组遍历: 使用索引从0开始,到数组长度-1结束for (var i = 0; i < arr.length; i++) {console.log(arr[i]);}

07-对象
1)string对象
<script type="text/javascript">var s="hello javascript";//长度console.log(s.length);//获取指定位置的字符console.log(s.charAt(6));//查询字符console.log(s.indexOf("a"));//查询字符串a最后出现的位置console.log(s.lastIndexOf("a"));//切割字符串console.log(s.split(" "));//截取console.log(s.substring(6));console.log(s.substring(6,9));</script>
2)Math 对象


3)Date 对象



<script type="text/javascript">var d = new Date(); //系统当前时间console.log(d);console.log(d.getYear()+1900); //120+1900=2020console.log(d.getFullYear());//2020console.log(d.getMonth()+1);//2 +1 ===>3//年-月-日 时:分:秒var d2 = d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();console.log(d2);//1970----现在d时间 总毫秒数var longTime = d.getTime();var d3 = new Date("2000-01-01 10:10:10");console.log(d3);</script>
4)自定义对象
// 参数作用: 初始化属性// this : 当前对象,指将要创建的对象function 构造函数名称(参数1,参数2,...,参数n) {// 添加属性this.属性名称 = 参数;this.属性名称 = 参数;...// 添加方法this.方法名称 = function(参数列表) {}this.方法名称 = function(参数列表) {}...}


<script type="text/javascript">/* 定义构造函数: 可以理解为一类事物 */function Person(name,age,sex) {// 添加属性this.personName = name;this.age = age;this.sex = sex;// 添加方法this.eat = function(e) {alert(this.personName + "正在吃" + e);}this.play = function(p) {alert(this.personName + "正在玩" + p);}}// 通过构造函数创建对象var p1 = new Person("张三",23,"男");console.log(p1);// 使用属性: 对象.属性p1.personName = "张飒";// 设置属性console.log(p1.personName);// 获取属性// 使用方法: 对象.方法p1.eat("麻辣烫");</script>
08-BOM
1)什么是BOM?


2)window对象

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><h1>window.setTimeout,clearTimeout函数</h1><script type="text/javascript">var c=10;var t;function timedCount(){console.log("倒计时开始:"+c);t=setTimeout("timedCount()",1000);c--;if(c<1){console.log("倒计时结束");window.clearTimeout(t);}}//调用函数timedCount();</script></body></html>
3)点击事件
<!-- 网页中任何一个元素都可以添加事件 --><!-- 当点击此按钮时,执行clickMe函数 --><!-- 事件触发: 当这个事件执行的时候,叫做事件触发 --><p οnclick="clickMe()">点我~~</p><button οnclick="clickMe2()">点我~~</button><script type="text/javascript">function clickMe() {alert("点我干嘛~~");}function clickMe2() {alert("就点你了~~");}</script>
4)location 地址对象

5)history 历史对象
09-DOM
1)什么是DOM?

2)查找元素(DOM对象, 标签元素)
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><h1>DOM编程2</h1><div><a id="a1" name="a1" class="c1" href="#">百度</a><a id="a2" name="a1" class="c1" href="#">新浪</a><a id="a3" name="a1" class="c1" href="#">京东</a><a id="a4" name="a2" class="c2" href="#">淘宝</a></div>3)DOM对象的修改, 修改DOM对象中的属性[1] innerHTML : 操作标签内部的HTML代码DOM对象.innerHTML = html代码; 设置标签内部的HTML代码var 变量 = DOM对象.innerHTML; 获取标签内部的HTML代码[2] value : 操作表单元素(input,select)的value属性<script type="text/javascript">//获取id="a1" 的元素 ----唯一查询 (一个页面中,不允许重复的id元素)var a1 = document.getElementById("a1");console.log(a1);//根据标签名 获取元素----返回多个-----HTMLCollection(4)var a2 = document.getElementsByTagName("a"); //获取本网页所有a标签console.log(a2);//根据name获取元素 ------>NodeList 节点对象集合var a3 = document.getElementsByName("a1");console.log(a3);//根据classname 样式名称 获取元素------》所有样式名称为c1的元素节点var a4 = document.getElementsByClassName("c1");console.log(a4);//a1的父节点 divvar p = a1.parentNode;console.log(p);//获得元素的子节点var pChildren = p.childNodes;console.log(pChildren);</script></body></html>
3)DOM对象的修改, 修改DOM对象中的属性
<script type="text/javascript">//获取 第2个h1的内部内容var h1 = document.getElementsByTagName("h1");console.log(h1[1].innerHTML);//修改p段落 内容var p1 = document.getElementsByTagName("p")[0];//修改内容p1.innerHTML="p段落修改后的新内容";</script>
//获取name="name"的输入框的内容var input1 = document.getElementsByName("name")[0];console.log(input1.value); //获取value//修改valueinput1.value="张三";
//单选按钮 男选择var sexes = document.getElementsByName("sex");console.log(sexes[0].checked);sexes[0].checked=true; //设置为选中//复选框var ck =document.getElementById("rememberMe");ck.checked = true;//复选框选中
<body><h1>DOM编程4</h1><div id="div1" style="width:200px;height:100px;background-color: red;display:block "></div><input type="button" οnclick="fun()" value="隐藏"><script type="text/javascript">//隐藏/显示 div id="div1"function fun(){//获取div1var div1 = document.getElementById("div1");//获取input buttonvar bt = document.getElementsByTagName("input")[0];if(bt.value=='隐藏'){//div隐藏div1.style.display = "none";//将按钮的value值设置为显示bt.value ="显示";}else{//显示工作//div显示div1.style.display = "block";//将按钮的value值设置为 隐藏bt.value ="隐藏";}}</script></body>
4)事件处理
1)、点击事件
2)、焦点事件
3)、加载事件
4)、鼠标事件
5)、键盘事件
6)、选择和改变事件
7)、表单事件




var input = document.getElementsByName("username")[0];input.onblur = function() {console.log(this); // 代表元素本身console.log("失去焦点事件执行")}
<form action="productDeletesServlet" method="post"><table border="1"><tr><th><input type="checkbox" name="ids" οnclick="font(this)">
全选/全不选
</th><th>序号</th><th>商品名称</th><th>商品单价</th><th>折扣</th><th>折扣价格</th><th>商品类型</th><th>操作</th></tr><c:forEach items="${list }" var="product" varStatus="p"><tr><td><input type="checkbox"
name="ids" value="${product.product_id }"></td><td>${p.count}</td><td>${product.product_name }</td><td>${product.price }</td><td>${product.zhekou }</td><td>${product.zhekou_price }</td><td>${product.product_type_name }</td><td>
<a href="productUpdateServlet?id=${product.product_id }">
修改
</a>
</td></tr></c:forEach></table><input type="submit" value="批量删除"></form><a href="typeServlet">添加</a><script type="text/javascript">var idsName=document.getElementsByName("ids");function font(e){for(var i=0;i<idsName.length;i++){idsName[i].checked=e.checked;}}</script>
5)文档处理
相关文章:

JavaScript(ES5) 入门
01-简介 1)JavaScript 发展史 [1] 1995年,navigator(导航者),netscape(网景);用户体验性特别好 [2] 表单验证难题,表单验证都是在后台处理.当时处在网速特别慢的时代,发送一个请求,接收响应 需要5分钟左右的时候提高表单验证的速度,想开发一种语言在前端进行表单验证. [3] 1995…...

趣店集团golang一面要个20K,Channel什么情况下会出现死锁,有遇到过吗?
结束后面试官加了VX,并询问方便二面的时间,一直还没回复,拖着拖着给忘啦... 面试题 1、自我介绍 2、你在团队里头负责哪一块,这个物流开放平台流量多大 3、为什么今年3月份被从物流开放团队转到了finance财务部门,感…...
智能化乙级资质延期,行业标准的坚守
智能化乙级资质延期:行业标准的坚守 一、引言 智能化乙级资质是企业在智能化工程设计与施工领域的重要认证,它代表了企业的技术实力和专业水平。为确保企业能够持续满足行业标准,保持竞争力,智能化乙级资质的延期管理显得尤为重要…...

d20(184-190)-勇敢开始Java,咖啡拯救人生
目录 网络通信 网络通信三要素(IP地址,端口号,协议 IP地址 InetAddress 端口号 协议 传输层的两个通信协议 UDP通信 java.net.Datagramsocket类 客户端 服务端 UDP通信多收多发 客户端 服务端 TCP通信 java.net.Socket类 客…...
Python 登录表单处理
分析: 处理登录表单以便爬⾍能够抓取需要认证的⽹⻚数据,通常需要模拟登录过程。这可以通过发送带有⽤⼾凭证的POST请求到登录表单的URL来实现。为了保持登录状态,需要处理和保存会话中的 cookies。Python的 requests 库可以⽅便地处理这些任…...

2024.05.27学习记录
1、面经复习: 实际工作经验章节 2、代码随想录刷题:动态规划剩下部分和单调栈 3、rosebush 组件库完成Input 和 AutoComplete部分内容...
BLASTBufferQueue端的GraphicBuffer怎么和SurfaceFlinger端的BufferStateLayer关联上
BLASTBufferQueue端的GraphicBuffer怎么和SurfaceFlinger端的BufferStateLayer关联上 引言 在跟进hwc_layer是如何产生的,并如何被填充上GraphicBuffer的,怎么也找不到被填充的GraphicBuffer的来源,最终找到了,它的来源是客户端的…...
48、spfa求最短路
spfa求最短路 题目描述 给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。 数据保证不存在负权回路。 输入格式 第一行包…...

安装PyTorch详细步骤
💥注意事项: CPU版和GPU版选一个进行安装即可 如果有Nvidia显卡,则安装cuda版本的PyTorch,如没有nvidia显卡,则安装cpu版。 目前常见的深度学习框架有很多,最出名的是:PyTorch(faceb…...

linux线程,线程控制与线程相关概念
线程概念 线程这个词或多或少大家都听过,今天我们正式的来谈一下线程; 在我一开始的概念中线程就是进程的一部分,一个进程中有很多个线程,这个想法基本是正确的,但细节部分呢我们需要细细讲解一下; 什么…...

第八大奇迹
目录 题目描述 输入描述 输出描述 输入输出样例 示例 输入 输出 运行限制 原题链接 代码思路 题目描述 在一条 R 河流域,繁衍着一个古老的名族 Z。他们世代沿河而居,也在河边发展出了璀璨的文明。 Z 族在 R 河沿岸修建了很多建筑,…...

MySQL:CRUD初阶(有图有实操)
文章目录 📑1. 数据库的操作🌤️1.1 显示当前的数据库🌤️1.2 创建数据库🌤️1.3 选中数据库🌤️1.4 删除数据库 📑2. 表的操作🌤️2.1 查看表结构🌤️2.2 创建表🌤️2.3…...
『大模型笔记』使用 vLLM 和 PagedAttention 快速提供 LLM 服务!
使用 vLLM 和 PagedAttention 快速提供 LLM 服务! 文章目录 一. 使用 vLLM 和 PagedAttention 快速提供 LLM 服务!1.1. PagedAttention二. 参考文献小红书中文字幕视频:https://www.xiaohongshu.com/explore/66502b60000000000500433e官网文档(推荐,里面有动图解释):vLLM:…...
简述vue-loader是什么?使用它的用途有哪些
vue-loader是一个webpack的加载器(loader),主要用于将Vue组件的单文件(.vue文件)转换为JavaScript模块。使用vue-loader的主要用途包括: 解析.vue文件:vue-loader能够解析.vue文件中的模板、样式和脚本,并将它们分离出来进行处理…...

如何远程访问Redis?
远程访问Redis是一种常见的需求,特别是在分布式系统或跨地域网络中。通过远程访问,我们可以轻松地对远程的Redis数据库进行操作和管理。 天联保障数据安全 对于远程访问Redis的安全性问题,我们可以借助天联来保障数据的安全。天联是一种基于…...

#12松桑前端后花园周刊-SolidStart、Vercel融资、Angular18、Nextjs15RC、p5.js、ChromeDevTools引入AI
⚡️行业动态 SolidStart 1.0 元框架发布 Solidjs 核心团队发布其元框架 SolidStart 1.0 正式版,其特点如下:基于文件系统的路由;支持SSR、流式SSR、CSR、SSG渲染模式;通过代码分割、树摇和无用代码删除构建优化;基于…...

vue3 vite title 页面标题设置
效果图: 1. 安装 vite-plugin-html 插件 npm install vite-plugin-html -D2. 修改 vite.config.js import {defineConfig, loadEnv} from vite import { createHtmlPlugin } from "vite-plugin-html" import {resolve} from path import vue from vitej…...
spring boot添加License(软件许可)
文章目录 前言1. 生成钥匙库2. 生成证书3. 生成公匙库4.业务代码1. 引入依赖2. 关键代码3. 配置文件 5、改成线上地址,这样不用每次打包,发送license.lic文件给客户,重启项目就行5.1、工具类5.2 修改部分: 总结 前言 工作需要给软…...

LangChain打造一个AI客服
最近在学习LangChain,langchain的第一个入门应用就是和ChatGPT结合形成的一个AI客服,本期文章就带大家一起认识下 LangChain LangChain是现在用得最多的AI框架,langchain在帮助如基于文档数据的回答、聊天机器人和代理这类的应用程序 langch…...
【前端三剑客之JS】详解JS
1. JS的引入方式 (1). 内部脚本方式引入 在页面上,通过一对script标签引入js代码.script代码放置位置有一定随意性,一般放在head标签中. (2).外部脚本方式引入. 内部脚本只能在当前页面中使用,代码复用度不高.可以将脚本放在单独的js文件…...

Golang基础学习
初见golang语法 go项目路径 cd $GOPATH //ls可以看到有bin,pkg,src三个文件 cd src/ mkdir GolangStudy cd GolangStudy mkdir firstGolanggo程序执行: go run hello.go//如果想分两步执行: go build hello.go ./hello导入包的方式 import "f…...

natapp 内网穿透失败
连不上网络错误调试排查详解 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 如何将DNS服务器修改为114.114.114.114_百度知道 连不上/错误信息等问题解决汇总 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 nslookup auth.natapp.cnping auth.natapp.cn...

Python训练营-Day22-Titanic - Machine Learning from Disaster
Description linkkeyboard_arrow_up 👋🛳️ Ahoy, welcome to Kaggle! You’re in the right place. This is the legendary Titanic ML competition – the best, first challenge for you to dive into ML competitions and familiarize yourself w…...
windows10搭建nfs服务器
windows10搭建nfs服务器 Windows10搭建NFS服务 - fuzidage - 博客园...

Codeforces Round 509 (Div. 2) C. Coffee Break
题目大意: 给你n、m、d n为元素个数,m为数列长度,d为每个元素之间的最短间隔 问最少需要多少个数列可以使得元素都能装进数列,并且满足每个元素之间的间隔大于等于d 核心思想 使用贪心的思想,将元素的大小进行排序,问题出在必…...

Pluto论文阅读笔记
主要还是参考了这一篇论文笔记:https://zhuanlan.zhihu.com/p/18319150220 Pluto主要有三个创新点: 横向纵向用lane的query来做将轨迹投回栅格化地图,计算碰撞loss对数据进行正增强和负增强,让正增强的结果也无增强的结果相近&a…...
MongoDB检查慢查询db.system.profile.find 分析各参数的作用
db.system.profile.find() 是分析 MongoDB 性能的关键工具,其返回的文档包含丰富的性能指标。下面是对各参数的详细解释和优化建议: {"op": "query", // 操作类型(query/update/remove)"ns": "test.users", // 命名…...
分布式Session处理的五大主流方案解析
在分布式环境下,Session 处理的核心挑战是确保用户请求在不同服务器间流转时能保持会话状态一致。以下是主流解决方案及优缺点分析: 🔐 一、集中存储方案(主流推荐) Redis/Memcached 存储 原理:将 Session…...
Python Robot Framework【自动化测试框架】简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
Scade 语言概念 - 方程(equation)
在 Scade 6 程序中自定义算子(Operator)的定义、或数据流定义(data_def)的内容中,包含一种基本的语言结构:方程(equation)(注1)。在本篇中,将叙述 Scade 语言方程的文法形式,以及作用。 注1: 对 Scade 中的 equation, 或 equation…...