HTML+JavaScript-01

news2024/12/28 9:23:55

说明

之前有一篇JavaWeb-JavaScript中只是简单介绍了一点JavaScript的内容,这篇笔记算是续写的,但是从01开始编号。

引入js文件

html、css、js俗称前端三剑客,一般都是分开写,先写框架、再写css、最后写js。因此在工程量大的情况下,一个页面可以分为三个文件(.html/.css/.js)。引入对应的js文件也就显得格外重要。因为JavaScript 是一门跨平台、面向对象的脚本语言,它能使网页可交互(例如拥有复杂的动画,可点击的按钮,通俗的菜单等)。

示例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 1、引入js文件 -->
    <script src="./js/00-javaScript.js"></script>
</head>

<body>
    <!-- 2、脚本块:把script标签写在body中,一般都在div下面 -->
    <script>

    </script>
</body>

</html>

.js文件中直接写函数即可

基本概念及用法

注释

Javascript 注释的语法和 C++ 或许多其他语言类似:

JSCopy to Clipboard

// 单行注释

/* 这是一个更长的,
   多行注释
*/

/* 然而,你不能,/* 嵌套注释 */ 语法错误 */

在代码执行过程中,注释将被自动跳过(不执行)。

声明

JavaScript 有三种声明方式。

  • var

    声明一个变量,可选初始化一个值。

  • let

    声明一个块作用域的局部变量,可选初始化一个值。

  • const

    声明一个块作用域的只读常量。

定义变量的注意事项

1、不能重复定义

2、名称不能使用关键字

3、由数字字母下划线组成

4、不能以数字开头

5、尽量采用驼峰命名法

​ 驼峰分为大驼峰和小驼峰

​ 大驼峰所有单词的首字母都大写 比如定义一个男学生的年龄 let StudentAgeBoy=10;

​ 小驼峰首个单词的首字母小写其余单词的首字母大写变量一般使用小驼峰 如 let studentAgeBoy=18;

基本数据类型

在JavaWeb-JavaScript这篇博客中有提到过,但是官网上有七种数据类型,这里在重新写一下(补充BigInt和Symbol)

JavaScript中分为:原始类型和引用类型

基本数据类型的主要特点是赋值方式是传值,并且值存在栈中

原始类型描述
Number数字(整数、小数、NaN(Not a Number))
String字符串,单双引号都可
Boolean布尔,true、false
null对象为空
undefined当声明的变量未初始化时,该变量的默认值是undefined
BigInt任意精度的整数,可以安全地存储大整数,甚至可超过安全整数的现在
Symbol代表,一种实例是唯一且不可改变的数据类型(防止命名冲突)
  • 注:使用typerof运算符可以获取数据类型

示例

案例-036

let a = true;
let b = 33;
let c = "hello world";
alert(typeof a);//boolean
alert(typeof b);//number
alert(typeof c);//string

引用数据类型

引用数据类型:object(对象,除了基本数据类型其他都是对象。数组是对象、函数是对象、正则表达式也是对象

引用数据类型的主要特点是赋值方式是传址,并且存在堆中。(因为引用数据类型的值的大小无法确定,要根据情况进行特定的配置)

代码

//创建一个对象
let obj1 = { key: 'value' };

//将obj1赋值给obj2,实际上是将引用传递给obj2
let obj2 = obj1;

obj1.key = "甲柒";
//由于obj1和obj2共享引用,所以obj2的值也会被修改
console.log(obj2.key);//甲柒

数据类型的转换

1、toString()方法转换

例如

let s = 998;//number
let a = s.toString();//将s转换为字符串类型并赋值给a

2、String(变量名)强制转换

例如

let b = 334;//number
let c = String(b);//强转为string

3、隐式转换(在js中,一个其他类型和字符串类型相加会获得一个新的字符串)

例如

let d = 521;//number
let f = d + "";//f为string类型

4、Number()强转

示例

案例-037

代码

let age = prompt("输入年龄");//默认输入的是字符串类型
let Age = Number(age);//将字符串类型强转为number类型
alert("age的数据类型是" + typeof age);//string
alert("Age的数据类型是" + typeof Age);//number

5、parseInt():向下取整

示例

案例-038

代码

let age = Number(prompt("输入年龄"));//输入小数22.33
let age1 = parseInt(age);//向下取整
alert("age的数据类型是" + typeof age);//number
alert("age向下取整后的值" + age1);//22

document

document.write:在浏览器页面进行打印

示例

image-20240119204408851

代码

document.write("甲柒~~");

console.log:控制台打印输出

示例

image-20240119204533939

代码

console.log("javaScript~~~");

prompt:在弹框中输入

示例

案例-035

代码

prompt("请输入你的姓名");
prompt("请输入你的年龄", 18);
prompt("请输入你的姓名", "甲柒");
prompt("", "JavaScript!!!");

案例-1-成绩判断

示例

案例-039

代码

let score = Number(prompt("成绩"));
switch (score != null) {
    case (score>=90):
    alert("优秀");
        break;
    case (score>=80):
    alert("良好");
        break;
    case (score>=60):
    alert("中");
        break;
    case (score<60):
    alert("差");
        break;
    default:
        break;
}

案例-2-判断闰年

闰年:四年一闰百年不闰,四百年一闰。

示例

案例-040

代码

// 弹窗输入年份
var year = prompt("请输入年份:");

// 判断是否是闰年的函数
function isLeapYear(year) {
    // 闰年的条件:
    // 1. 能被4整除,但不能被100整除
    // 2. 能被400整除
    return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
}

// 判断并弹出结果
if (isLeapYear(parseInt(year))) {
    alert(year + "年是闰年!");
} else {
    alert(year + "年不是闰年!");
}

案例-3-判断某年某月的天数

1、3、5、7、8、10、12:31天

4、6、9、11:30天

2:分为闰年、平年

示例

案例-041

代码

var year = prompt("请输入年份:");
var month = prompt("请输入月份:");

switch (month != null && year != null) {
    case (month == 1):
    case (month == 3):
    case (month == 5):
    case (month == 7):
    case (month == 8):
    case (month == 10):
    case (month == 12):
        alert(year + "年" + month + "月有 " + "31" + " 天。");
        break;
    case (month == 4):
    case (month == 6):
    case (month == 9):
    case (month == 11):
        alert(year + "年" + month + "月有 " + "30" + " 天。");
        break;
    case (month == 2):
        if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) {
            alert(year + "年" + month + "月有 " + "29" + " 天。");
        } else {
            alert(year + "年" + month + "月有 " + "28" + " 天。");
        }
        break;
    default:
        break;
}

案例-4-能否被3、5、7整除

注意顺序:先判断同时满足三种情况,然后判断同时满足两种情况,最后判断满足一种情况

示例

案例-042

代码

let num = prompt("请输入一个数");
switch (num != null) {
    case num % 3 == 0 && num % 5 == 0 && num % 7 == 0:
        alert(num + "可以被3、5、7整除");
        break;
    case num % 3 == 0 && num % 5 == 0:
        alert(num + "可以被3和5整除");
        break;
    case num % 3 == 0 && num % 7 == 0:
        alert(num + "可以被3和7整除");
        break;
    case num % 5 == 0 && num % 7 == 0:
        alert(num + "可以被5和7整除");
        break;
    case num % 3 == 0:
        alert(num + "可以被3整除");
        break;
    case num % 5 == 0:
        alert(num + "可以被5整除");
        break;
    case num % 7 == 0:
        alert(num + "可以被7整除");
        break;
}

从一个数组中获取随机值

使用Math.random()

示例

案例-043

先声明一个数组

const array = ['a', 'b', 'c', 'd', 'e'];

使用Math.random()函数对数组的下标进行随机取值,注意要对随机值进行取整处理,可以使用parseInt()或者Math.floor()

Math.random()生成0到1之间的随机数,并与数组长度相乘,数字总是在0到数组长度之间返回,这被称为随机指数。Math.floor(),对于浮动的下限值返回整数。

function randomNum() {
    const array = ['a', 'b', 'c', 'd', 'e'];
    let arrayIndex = parseInt(Math.random() * array.length);
    let arrayRandom = array[arrayIndex];
    alert(array+"中的随机数为:"+arrayRandom);
}
randomNum();

parseInt()Math.floor() 都是 JavaScript 中用于数值处理的函数,但它们的行为有所不同。

  1. parseInt() 函数用于将字符串转换为整数。如果字符串的开头是数字,parseInt() 将返回这个数字的整数形式。如果字符串的开头不是数字,parseInt() 将返回 NaN。例如:
parseInt('123abc'); // 返回 123
parseInt('abc123'); // 返回 NaN

此外,parseInt() 还接受第二个参数,表示要转换的数字的基数。例如:

parseInt('10', 2); // 返回 2 (二进制中10表示为1010)
  1. Math.floor() 函数用于将一个数值向下取整。也就是说,它会返回不大于给定数值的最大整数。例如:
Math.floor(4.7); // 返回 4
Math.floor(-4.7); // 返回 -5

注意,Math.floor() 只处理数值,如果你尝试将非数值传递给它,它可能会返回 NaN

在某些情况下,你可能会发现 Math.floor() 的行为类似于 parseInt(),尤其是当你处理的数字接近于整数时。然而,它们之间的主要区别在于如何处理非整数部分:Math.floor() 会完全忽略它们,而 parseInt() 则会简单地将其视为0。

参考文章:https://juejin.cn/post/7118593994212245518

Math对象

常用函数属性
random随机生成0-1的随机数[0, 1)
ceil向上取整
floor向下取整
max找最大值
min找最小值
pow幂运算
abs求绝对值
round四舍五入

注:随机生成一个n-m的整数Math.floor(Math.random() * (m - n + 1)) + n;

示例-1

案例-045

代码

let a = Math.random();//随机生成一个0-1的小数
console.log("a=" + a);//[0,1)

let a1 = Math.random() * 10;//随机生成一个0-10的小数
console.log("a1=" + a1);//[0,10) 小数

let a2 = Math.floor(11.9);//floor 向下取整
console.log("a2=" + a2);//11

let a3 = Math.floor(Math.random() * 11);//生成0-10的整数
console.log("a3=" + a3);//[0,10] 整数

let a4 = Math.floor(Math.random() * 6) + 5;//随机生成5-10的整数
console.log("a4=" + a4);//[5,10]

// 随机生成一个n-m的整数
// Math.floor(Math.random() * (m - n + 1)) + n;

// 随机生成一个10-30的整数
let a5 = Math.floor(Math.random() * (30 - 10 + 1)) + 10;
console.log("a5=" + a5);//[10,30]

let a6 = Math.ceil(13.09);//向上取整
console.log("a6=" + a6);//14

示例-2

image-20240120161304014

代码

let a7 = Math.max(1, -2, 3, 4, 5, 6, 99, 9, 45);
let a8 = Math.min(1, -2, 3, 4, 5, 6, 99, 9, 45);
console.log("a7=" + a7);//99
console.log("a8=" + a8);//-2

const arr = [33, 22, 55, 66, 77, -99];
let a9 = Math.max(...arr);//...展开运算符
console.log("a9=" + a9);//77

let a10 = Math.pow(2, 4)//求2的4次方
console.log("a10=" + a10);//16

let a11 = 2 ** 3;//2的3次方
console.log("a11=" + a11);//8

let a12 = Math.abs(-19);//求绝对值
console.log("a12=" + a12);//19

console.log(Math.round(3.14159));//四舍五入 3 

注:...为展开运算符

展开语法

展开语法 (Spread syntax), 可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开;还可以在构造字面量对象时,将对象表达式按 key-value 的方式展开。(译者注: 字面量一般指 [1, 2, 3] 或者 {name: "mdn"} 这种简洁的构造方式)

详情:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax#%E8%AF%AD%E6%B3%95

案例-5-生成验证码

示例

案例-044

代码

function captcha() {
    const characters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
        'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
        'w', 'x', 'y', 'z', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
    const newCode = [];
    for (let i = 0; i <= 3; i++) {
        let index = Math.floor(Math.random() * characters.length);
        newCode.push(characters[index]);
    }
    return newCode;
}
alert("本次验证码:" + captcha());

日期对象Date

常用方法

方法名作用取值范围
getFullYear()获取年份获取四位年份
getMonth()获取月份0-11
getDate()
getDay()获取星期0-6
getHours()获取小时0-23
getMinutes()获取分钟0-59
getSeconds()获取秒0-59

示例

image-20240120164650068

代码

const date = new Date();//实例化对象

let year = date.getFullYear();
console.log(year + "年");//年
console.log(date.getMonth() + 1 + "月");//月
console.log(date.getDate() + "日");//日
console.log("星期" + date.getDay());//星期
console.log(date.getHours() + "时");//时
console.log(date.getMinutes() + "分");//分
console.log(date.getSeconds() + "秒");//秒

格式化日期对象

自定义函数格式化时间

示例

image-20240120165238574

代码

function getDate() {
    //创建时间对象
    const date = new Date();
    let year = date.getFullYear();
    let month = date.getMonth() + 1;
    let date1 = date.getDate();
    let hours = date.getHours();
    hours = hours < 10 ? "0" + hours : hours
    let minute = date.getMinutes();
    minute = minute < 10 ? "0" + minute : minute;
    let second = date.getSeconds();
    second = second < 10 ? "0" + second : second;

    return year + "年" + month + "月" + date1 + "日" + "  " + hours + ":" + minute + ":" + second
}
console.log(getDate());

使用封装过的方法

方法名格式
toLocaleString()2022/4/1 09:33:34
toLocaleDateString()2022/4/1
toLocaleTimeString()10:09:31

示例

image-20240120170145431

代码

const date = new Date();//实例化对象
console.log(date.toLocaleString());//2024/1/20 17:00:42
console.log(date.toLocaleDateString());//2024/1/20
console.log(date.toLocaleTimeString());//17:00:42

时间戳

时间戳:是指1970年01月01日00时00分00秒到现在的毫秒数

获取时间戳

示例

image-20240120171013947

方法一

const date = new Date();
console.log(date.getTime());

方法二

console.log(+new Date());

方法三

console.log(Date.now());

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

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

相关文章

第36集《佛法修学概要》

请大家打开讲义第九十六面&#xff0c;我们讲到禅定的修学方便。 在我们发了菩提心&#xff0c;安住菩萨种性以后&#xff0c;我们开始操作六度的法门。六度的法门&#xff0c;它有两个不同的差别的内容&#xff0c;一种是成就我们的善业力&#xff0c;另外一种&#xff0c;是…

Unity中URP下的SimpleLit的 Lambert漫反射计算

文章目录 前言一、Lambert漫反射计算11、MixRealtimeAndBakedGI 函数有三个重载2、3号 调用了 2号3、1号调用了 SubtractDirectMainLightFromLightmap函数4、我们重点来看 Lambert漫反射的实现部分5、其余部分 二、Lambert漫反射计算21、LightingLambert 前言 在之前的文章中&…

电脑pdf如何转换成word格式?用它实现pdf文件一键转换

pdf转word格式可以用于提取和重用pdf文档中的内容&#xff0c;有时候&#xff0c;我们可能需要引用或引用pdf文档中的一些段落、表格或数据&#xff0c;通过将pdf转换为可编辑的Word文档&#xff0c;可以轻松地复制和粘贴所需内容&#xff0c;节省我们的时间&#xff0c;那么如…

windows下载安装ffmpeg最新版

windows环境搭建专栏&#x1f517;点击跳转 win系统环境搭建&#xff08;十六&#xff09;——windows下载安装ffmpeg最新版 文章目录 win系统环境搭建&#xff08;十六&#xff09;——windows下载安装ffmpeg最新版1.下载2.安装3.验证 1.下载 下载页面地址是https://ffmpeg.…

Windows WSL2 占用磁盘空间清理释放

目前工作中时常用到WSL2&#xff08;Ubuntu20.04&#xff09;&#xff0c;在使用一段时间后会发现WSL2所占用磁盘空间越来越多&#xff0c;体现在WSL2之上安装Linux分发对应的vhdx虚拟磁盘文件体积越来越大&#xff0c;会占用Windows自身空间&#xff0c;即使手动清理了Linux分…

计算机毕设thinkphp+mysql+_vue房屋租赁系统h3sem

运行环境:phpstudy/wamp/xammp等 开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp5 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat/phpmyadmin 房屋租赁管理系统有不同的用户角色。不同的用户权限对应不…

postgresql(Windows)初始化数据库教程

省流&#xff1a;本文章内容讲的是如何初始化postgresql数据库环境&#xff0c;前提是已经安装好postgresql数据库&#xff0c;安装步骤参考postgresql&#xff08;Windows&#xff09;安装教程 # 开始&#xff1a;安装postgresql-12.14-2-windows-x64.exe完成后进行初始化数据…

Java面试汇总——jvm篇

目录 JVM的组成&#xff1a; 1、JVM 概述(⭐⭐⭐⭐) 1.1 JVM是什么&#xff1f; 1.2 JVM由哪些部分组成&#xff0c;运行流程是什么&#xff1f; 2、什么是程序计数器&#xff1f;(⭐⭐⭐⭐) 3、介绍一下Java的堆(⭐⭐⭐⭐) 4、虚拟机栈(⭐⭐⭐⭐) 4.1 什么是虚拟机栈&…

《WebKit 技术内幕》之六(1): CSS解释器和样式布局

《WebKit 技术内幕》之六&#xff08;1&#xff09;&#xff1a;CSS解释器和样式布局 CSS解释器和规则匹配处于DOM树建立之后&#xff0c;RenderObject树之前&#xff0c;CSS解释器解释后的结果会保存起来&#xff0c;然后RenderObject树基于该结果来进行规范匹配和布局计算。当…

编译+链接

文章目录 编译预编译&#xff08;预处理&#xff09;编译汇编 链接 我们写完一个程序要经过 编译和 链接过程才能形成 可执行程序&#xff0c;那么编译和链接的具体过程究竟是什么呢&#xff1f; 首先&#xff0c;当我们写完一个工程后可能会有很多文件&#xff0c;这些文件…

反欺诈与异常点检测

1. 反欺诈检检测 1.1 反欺诈检测的难点 反诈骗实际是个多分类问题&#xff0c;每种不同的诈骗都当做一种单独的类型。除了欺诈手段多样且持续变化&#xff0c;欺诈检测一般还面临以下问题&#xff1a; 1. 大部分情况下数据是没有标签的&#xff0c;各种成熟的监督学习没有用武…

基于深度学习的细胞感染性识别与判定

基于深度学习的细胞感染性识别与判定 基于深度学习的细胞感染性识别与判定引言项目背景项目意义项目实施数据采集与预处理模型选择与训练模型评估与优化 结果与展望结论 基于深度学习的细胞感染性识别与判定 引言 随着深度学习技术的不断发展&#xff0c;其在医学图像处理领域…

【操作系统和计网从入门到深入】(四)基础IO和文件系统

前言 这个专栏其实是博主在复习操作系统和计算机网络时候的笔记&#xff0c;所以如果是博主比较熟悉的知识点&#xff0c;博主可能就直接跳过了&#xff0c;但是所有重要的知识点&#xff0c;在这个专栏里面都会提到&#xff01;而且我也一定会保证这个专栏知识点的完整性&…

【网站项目】基于jsp的199旅游景点管理系统

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

最安全的飞行器——飞行汽车

飞行汽车采用旋翼机飞行方式&#xff0c;稳定可靠&#xff0c;保证人身安全&#xff0c;可以垂直起降。旋翼机的稳定性在所有航空器中最高的&#xff0c;旋翼机被国际航空界公认为最安全的飞行器&#xff01;增程器采用斯特林发电机。飞行汽车3D。 固定翼飞机在起飞的时候&…

二叉树 - 堆 | 数据结构中的小技巧大作用

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 一、堆的概念及介绍二、结构图示三、堆的代码实现&#xff08;图解&#xff09;3.1 创…

【RT-DETR有效改进】华为 | GhostnetV2移动端的特征提取网络效果完爆MobileNet系列

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…

【RT-DETR有效改进】Google | EfficientNetV1一种超轻量又高效的网络 (附代码 + 添加教程)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

2024首更---Web Service 教程

Web Services 简介 Web Services 可使您的应用程序成为 Web 应用程序。 Web Services 通过 Web 进行发布、查找和使用。 您应当具备的基础知识 在继续学习之前&#xff0c;您需要对下面的知识有基本的了解&#xff1a; HTMLXML 如果您希望首先学习这些项目&#xff0c;请在…

蓝桥杯-dfs(一)

&#x1f4d1;前言 本文主要是【算法】——dfs使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff1…