一、Math常用的方法
Math:数学函数 “它是一个标准特殊对象” 因为Math对象中包含了很多操作“数字/几何/数学”的方法 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math
1)Math.abs([value]) 求绝对值
Math.abs(-1)
2)Math.ceil/Math.floor 向上取整,向下取整
向上取整,无论是正数还是负数,都取最大的值
向下取整,无论是正数还是负数,都取最小的值
Math.ceil(1.2)
2
Math.ceil(-1.6)
-1
Math.floor(1.8)
1
Math.floor(-1.1)
-2
3)Math.round() 四舍五入
- 正数的话,还是正常的,之前理解的,但是如果是负数,临界点必须大于5
Math.round(1.5)
2
Math.round(-1.5)
-1
Math.round(-1.51)
-2
4)Math.sqrt() 开平方
Math.sqrt(9)
3
5)Math.pow(n,m) 取幂
n的m次幂
Math.pow(3,2) ==> 9
6)Math.PI
Math.PI ===>3.141592653589793
7)Math.max/Math.min 获取最大值和最小值
Math.max(1,2,3)
Math.min(4,5,6)
8)Math.random() 获取0~1 之间的随机数(大于等于0,小于1)
获取n 到m 之间的随机数:Math.random()*(m-n)+n;
// 获取10 到20 之间的随机数
Math.random()*(20-10)+10
1.Math.random是取[0,1)的数; 获取随机数[0,1] 0-1之间的小数 包含0 不包含1
2.探索:获取n到m之间的随机整数[n,m] 前提 n
获取0-10的随机整数
Math.round(Math.random()(10-1)+1)
二 验证码案例
1.四位可能重复 for循环
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.coedBox {
margin: 20px;
cursor: pointer;
width: 150px;
height: 50px;
line-height: 50px;
font-size: 30px;
color: #9d2121;
text-align: center;
background-color: lightcyan;
letter-spacing: 5px;
user-select: none;
/*不允许用户复制*/
}
</style>
</head>
<body>
<div class="coedBox">
YQa3
</div>
<!--
验证码 数字+字母组合
拼图
数学运算
按顺序点击
选图片 旋转图片
-->
<script>
var box = document.querySelector(".coedBox");
/* 生成四位验证码,并且放入到codeBox黑盒子中 */
function createCode() {
//area 取值范围 所以0~61 获取某个字符area.charAt([索引])
var area = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
// 循环四次 每一次都创建一个0-61之间的随机索引 根据索引取出字符 拼接在一起 就是想要的验证码
var code = '';//存放拼接起来的结果
for (var i = 0; i < 4; i++) {
var ran = Math.round(Math.random() * (61 - 0) + 0),//Math.round(Math.random()*[m-n]+n)
char = area.charAt(ran);
code += char; //把字符拼接起来
}
//把生成的验证码放置在盒子中
box.innerHTML = code;
}
/* 加载页面的时候执行一次 */
createCode();
// 点击盒子重新执行方法
box.onclick = createCode;//不写小括号是吧方法给到点击事件
</script>
</body>
</html>
2.四位不重复 while循环 制作验证码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.coedBox {
margin: 20px;
cursor: pointer;
width: 150px;
height: 50px;
line-height: 50px;
font-size: 30px;
color: #9d2121;
text-align: center;
background-color: lightcyan;
letter-spacing: 5px;
user-select: none;
/*不允许用户复制*/
}
</style>
</head>
<body>
<div class="coedBox">
YQa3
</div>
<!--
验证码 数字+字母组合
拼图
数学运算
按顺序点击
选图片 旋转图片
-->
<script>
/* ----不重复的验证码 每一次取出的字符 不一定要拼接进去 只有之前已经拼接好的验证码中,没有这个字符 我们才拼接
* +不确定循环的次数 只有当验证码已经拼成四位后,才会结束
*
*
*/
var box = document.querySelector(".coedBox");
/* 生成四位验证码,并且放入到codeBox黑盒子中 */
function createCode() {
//area 取值范围 所以0~61 获取某个字符area.charAt([索引])
var area = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
// 循环四次 每一次都创建一个0-61之间的随机索引 根据索引取出字符 拼接在一起 就是想要的验证码
var code = '';//存放拼接起来的结果
while(code.length<4){
var ran = Math.round(Math.random() * (61 - 0) + 0),//Math.round(Math.random()*[m-n]+n)
char = area.charAt(ran);
//验证当前获取的字符在已有的验证码中是否存在 如果存在就不累加了[忽略大小写]
if(code.toLowerCase().indexOf(char.toLowerCase())===-1){
code += char; //把字符拼接起来
}
}
//把生成的验证码放置在盒子中
box.innerHTML = code;
}
/* 加载页面的时候执行一次 */
createCode();
// 点击盒子重新执行方法
box.onclick = createCode;//不写小括号是吧方法给到点击事件
</script>
</body>
</html>
三 While循环
只要条件成立,就一直执行,知道条件不成立的时候停止 使用while 循环的时候,一定要避免死循环 知道循环的次数 我们一般使用for循环 不知道具体多少次的 一般使用while
while(条件){
循环体
}
四 日期对象
new Date();//获取当前客户端本地的日期,结果是一个日期对象 仅供参考 因为客户端时间可以肆意更改 不能拿它做重要的业务判断 new Date([时间字符串]): 把一个时间字符串 变为标准的日期对象
【1作用】:Date 对象用于处理日期和时间。
【2创建时间对象】: new Date()
var myDate=new Date(); //Sun Apr 18 2021 01:03:46 GMT+0800 (中国标准时间) 2021/4/18
//Sun=》星期 Apr=》四月 18=》日 2021=》2021年 01:06:46
typeof myDate;====>"object" // 获取到是一个对象,并不是字符串
【3】时间对象相关属性和方法
- getDate();//获取日
- getDay();//获取星期几 (结果为 0—-6)代表周日到到周六 因为在外国默认第一天为周日
- getFullYear();//获取年
- getHours();//获取小时
- getMilliseconds();//获取毫秒
- getMinutes();//获取分钟
- getMonth()://获取月 0到11 代表1月到12月
- getSeconds();//获取秒
- getTime();获取当前日期到1970年1月1号 00:00:00 之间的毫秒差
- toLocaleString();// 获取到的是年月日,时分秒”2019/12/25 上午10:15:50”
- toLocaleDateString();// 获取到是字符串的年月日,例如:”2019/12/25”
- toLocaleTimeString();/ 获取到的是字符串的时分秒上午10:18:28
【4】日期格式化方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//格式化时间字符串 把某个格式的时间字符串 变为我想要的格式
function zero(str){
//补充0
str=str+'';
return str.length<2?`0${str}`:str;
}
/* 时间字符串格式化 */
function formatTime(time){
//转成日期对象
time=new Date(time);
var year=time.getFullYear(),
month=time.getMonth()+1;//默认是0-11
day=time.getDate(),//当前日
week=time.getDay(),//0-6 周日到周六
hours=time.getHours(),//获取小时
minues=time.getMinutes(),//获取分钟
seconds=time.getSeconds();//获取秒
var weekstr="日一二三四五六";
week=`星期${weekstr.charAt(week)}`;
return `${year}年${zero(month)}月${zero(day)}日 ${week} ${zero(hours)}时${zero(minues)}分${zero(seconds)}秒`;
}
//console.log(time);
var res=formatTime('2021/4/17 12:36:8');
console.log(res);
</script>
</body>
</html>