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文件…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
