day2
<script>
// 数字: 算术运算符
// 字符串: 模板字符串
// 布尔型
// undefined
// null
let flag = true
let flag2 = false
// 注意点: 1.布尔型的数据不能通过引号包裹 2.布尔型数据, 在条件判断和循环中以及比较运算符中会使用到
console.log(flag)
// let msg
// console.log(msg)
// function fn(x, y) { // 定义函数, 等待别人给x和y赋值
// console.log(x)
// console.log(y)
// }
// fn()
// null和undefined就在最初定义js语法的时候, 作者没有想的太明白
let obj = null
console.log(obj)
</script>
<script>
//if (布尔类型数据) { // 布尔类型的数据, 我们可以通过比较运算符而得到
// 代码1
// 代码2
// 代码3
//}
// console.log('1')
// let num = prompt('请输入一个数字:')
// if (num > 100) {
// console.log('这个数大于100')
// }
// console.log('2')
let num = prompt('请输入你的高考成绩:')
if (num > 700) {
alert('恭喜你考上了黑马程序员')
} else {
alert('加油, 下次继续努力')
}
</script>
<script>
let uname = prompt('请输入你的用户名:')
let pwd = prompt('请输入你的密码:')
if (uname==='pink' && pwd==='123456') {
alert('登录成功!')
} else {
alert('登录失败!')
}
</script>
<script>
let year = prompt('请输入一个年份:')
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
alert('闰年')
} else {
alert('平年')
}
</script>
<script>
let score = prompt('请输入你的成绩:')
if (score > 90) {
alert('优秀')
} else if(score > 70) {
alert('良')
} else if(score > 60){
alert('及格')
} else {
alert('不及格')
}
alert('haha')
</script>
<script>
let uname = prompt('请输入你的用户名:')
let pwd = prompt('请输入你的密码:')
// if (uname==='pink' && pwd==='123456') {
// alert('登录成功!')
// } else {
// alert('登录失败!')
// }
// 条件 ? 代码1 : 代码2
uname==='pink' && pwd==='123456' ? alert('登录成功!') : alert('登录失败!')
</script>
<script>
let num = prompt('请输入一个数字:')
// console.log(num)
// 当条件成立的时候, 就会把:左边的部分, 当做整个三元表达式的值
// 当条件不成立的时候, 就会把:右边的部分, 当做整个单元表达式的值
num = num < 10 ? '0' + num : num
console.log(num)
</script>
<script>
let num1 = +prompt('请输入第一个数字:')
let num2 = +prompt('请输入第二个数字:')
let op = prompt('请输入: + - * / 中的其中一个')
// if (op === '+') {
// console.log(num1 + num2)
// } else if (op === '-') {
// console.log(num1 - num2)
// } else if (op === '*') {
// console.log(num1 * num2)
// } else if(op === '/') {
// console.log(num1 / num2)
// }
switch (op) {
case '+':
console.log(num1 + num2)
break
case '-':
console.log(num1 - num2)
break
case '*':
console.log(num1 * num2)
break
case '/':
console.log(num1 / num2)
break
default:
console.log('你输入的符号不正确!')
}
console.log('haha')
</script>
<script>
// 100次媳妇我错了的输出
// 循环代码 循环的是循环体中的多行代码, 这多行代码, 每一次执行的时候, 也是从上往下执行的
let i = 0
console.log('haha')
while (i<5) {
console.log('媳妇我错了0')
console.log('媳妇我错了1')
i++
}
console.log('hehe')
// 计数器的初始值, 不一定非得是1
</script>
<script>
let i = 1
console.log('haha')
let count = prompt('请输入循环的次数:')
while (i<=count) { // prompt不能写在小括号中, 因为小括号中的代码也会重复执行
console.log('媳妇我错了0')
console.log('媳妇我错了1')
i++
}
console.log('hehe')
</script>
<script>
// 1到100之间的累加和
// 第一件事情: 造出100次的循环代码结构
// 第二件事情: 进行累加操作(用新的变量存储累加数据)
// 1到100之间 所有偶数的累加和
let i = 1
let sum = 0
while (i<=100) {
if (i % 2 === 0) { // 当i和2求余结果是0的时候, 才需要进行累加的操作
sum += i
}
i++
}
console.log(sum)
</script>
<script>
// 1到100之间的累加和
// 计数或者累加的时候, 要用一个新的变量
// 有多少个 能被3整除的数
// let i = 1
// let count = 0
// while (i<=100) {
// if (i % 3 === 0) {
// count++
// console.log(i)
// }
// i++
// }
// console.log(count)
// 有多少个 能被 17 整除的 三位数
// 存在不必要的工作
let i = 100
let count = 0
while (i<=999) {
if (i % 17 === 0) {
count++
}
i++
}
alert(count)
</script>
<script>
// let i = 1
// while (i<=10) {
// continue // 一般来说, continue, break 会放在if中
// console.log('haha')
// i++
// }
// 1~100之间所有偶数的累加和
// let i = 1
// let sum = 0
// while (i<=100) {
// if (i % 2 !== 0) {
// i++
// continue
// }
// sum += i
// i++
// }
// console.log(sum)
// let i = 1
// while (i<=1000) {
// console.log('haha')
// i++
// break
// }
// 1~100之间的数进行累加, 累加到谁的时候, 和就超过了1000
let i = 1
let sum = 0
while(i<=100) {
sum += i
if (sum > 1000) {
console.log(i)
break
}
i++
}
</script>
<script>
while(true) {
let msg = prompt('你爱我吗?')
if (msg === '爱') {
break
}
}
</script>
<script>
// 输出100次媳妇我错了
// let i = 1
// while (i<=100) {
// console.log('媳妇我错了')
// i++
// }
// for(let i=1;i<=100;i++){
// console.log('媳妇我错了')
// }
// for循环计算1到100之间所有偶数的累加和
let sum = 0
let count = 0
for (let i=1;i<=100;i++) {
if (i % 2 === 0) {
sum += i
}
if (i % 7 === 0) {
count += 1
}
}
console.log(sum)
console.log(count)
</script>
<script>
// 由用户输入两个数, 求这两个数之间的累加和
// 步骤1: 先写出1到100之间的累加和
// 步骤2: 找出代码的切入点
let start = +prompt('请输入第一个数字:')
let end = +prompt('请输入第二个数字:')
let sum = 0
for (let i=start;i<=end;i++) {
sum += i
}
</script>
<script>
for (let k=1;k<=9;k++) {
for (let i=1;i<=k;i++) { // 第一行, 想让它小于等于1
// 第二行, 想让它小于等于2
// 第三行, 想让它小于等于3
// 第四行, 想让它小于等于4
// 第五行, 想让它小于等于5
// i小于等于的这个值, 恰好就是k的值
document.write('★')
}
document.write('<br>')
}
for (let k=1;k<=9;k++) {
// 第1行: i小于等于5
// 第2行: i小于等于4
// 第3行: i小于等于3
// 第4行: i小于等于2
// 第5行: i小于等于1
for (let i=1;i<=9 + 1 - k;i++) {
document.write('★')
}
document.write('<br>')
}
</script>
<script>
// 1.一行九颗星星
// 2.将步骤1的代码重复9次
// 3.将步骤2中9行9列变为正三角
// 4.将★变为a*b=c的字符串
// 5.将a, b, c变为真实的数据
for (let k=1;k<=9;k++) {
for (let i=1;i<=k;i++) {
document.write(`${i}*${k}=${k*i} `)
}
document.write('<br>')
}
</script>
day4
<script>
// 遍历? 将一个容器里面的所有物品都去访问
let arr = ['小明', '小红', '小刚', '小李', '哈哈', '呵呵', 'xixi', 'fjlasdjfla', 'aaa']
// 利用循环, 将数组里面的每一个元素进行访问
// for (let i=0;i<arr.length;i++) {
// // i 1-->下标0
// // i 2-->下标1
// // i 3-->下标2
// // i 4-->下标3
// console.log(arr[i])
// }
for (let i=0;i<arr.length;i++) {
// 就把i的值, 当做下标进行使用
console.log(arr[i])
}
</script>
<script>
let arr = [2, 6, 1, 7, 4, 8, 13]
// 数组里面所有元素的和, 平均值
// 涉及到 累加值, 计数, 标记 我们都会定义新的变量来存储数据
let sum = 0
for (let i=0;i<arr.length;i++) {
sum += arr[i]
}
console.log(sum)
console.log(sum/arr.length)
</script>
<script>
let arr = [2, 6, 1, 77, 52, 25, 7]
// 思路: 假设 arr[0] 就是最大值
// 然后挨个的和数组里面的每一个元素进行对比
let max = arr[0] // max所代表的的就是数组的最大值
let min = arr[0] // min所代表的就是当下我们假定的数组中的最小值
for (let i=0;i<arr.length;i++) {
// max arr[i] 进行对比
if (max < arr[i]) {
max = arr[i]
}
if (min > arr[i]) {
min = arr[i]
}
}
console.log(max)
console.log(min)
</script>
<script>
let arr = ['haha', 'hehe', 'xixi']
// arr = 'heihei' // 这一行代码并不是修改数组里面的某一个元素, 它是将整个数组进行修改
arr[1] = 'heihei'
console.log(arr)
let arr1 = [10, 15, 18, 23]
// 把数组里面的每一个元素都增加5
for (let i=0;i<arr1.length;i++) {
arr1[i] += 5
}
console.log(arr1)
</script>
<script>
let arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
// 将arr中大于等于10的元素挑出来, 放到新的数组中
let newArr = []
for (let i=0;i<arr.length;i++) {
if (arr[i] >= 10) {
// arr[i]这个元素需要放到newArr中去
// newArr.push(数据)
// newArr.push(arr[i])
// 数组[数组.length] = 值
newArr[newArr.length] = arr[i]
}
}
console.log(newArr)
</script>
<script>
let arr = [10, 20, 30, 40, 50]
// arr.pop() // 当执行完arr.pop之后, arr就发生了变化. 每调用一次, 都会把当下数组的最后一个元素删除
// arr.pop()
// arr.pop()
arr.shift() // 把数组当下第一个元素删除, 执行完之后 arr就会发生变化
arr.shift()
console.log(arr)
/**
数组的增加和删除:
头部的增加和删除: arr.unshift(数据) arr.shift()
尾部的添加和删除: arr.push(数据) arr.pop()
其他位置的添加和删除如何实现呢?
* **/
</script>
<script>
// splice这个方法可以让我们在任意的位置添加或者删除元素
let arr = [10, 20, 30, 40, 50]
// arr.splice(位置, 删除元素的个数, 要增加的数据)
arr.splice(2, 1) // 从下标索引2开始, 删除1个元素
// arr.splice(2, 0, 80)
// 任意位置删除 arr.splice(位置, 删除的数量)
// 任意位置增加 arr.splice(位置, 0, 要增加的数据)
console.log(arr)
</script>
sort方法进行排序
<script>
let arr = [1,2, 3, 4, 5]
arr.sort(function(a, b){
return b-a
}) // 数组中的元素经过了sort的方法之后, 就能够排序好了, sort默认就是从小到大进行排序
console.log(arr)
</script>
<script>
// 函数的参数, 可以让函数内部的代码更加灵活, 不会太局限
// 函数的参数的使用: 我们需要在定义函数的括号中定义变量, 括号中定义变量, 不需要写let关键字
// 如下: 我们在括号中定义了两个变量, 这两个变量的值是多少? 不确定. 调用函数的时候才能确定下
// 形参
function getSum(start, end) {
let sum = 0
for (let i=start;i<=end;i++) {
sum += i
}
console.log(sum)
}
// 实参 实际的参数
getSum(10, 20) // 这时候, 我想计算是10~20之间的累加和
getSum(50, 60) // 这时候, 我想计算是50~60之间的累加和
getSum(1, 100) // 这时候, 我想计算是1~100之间的累加和
// 由调用函数的地方, 传递数据到函数体内部, 从而造成了不同的结果
/**
1.函数的基本使用
函数的声明 function 函数名字() {代码}
函数的调用 函数名字()
2.如何让函数内部的功能更加灵活?
函数参数:
形式参数: function getSum(start, end) {}
实际参数: getSum(1, 100)
**/
</script>
<script>
// 函数只是对一段代码的包装, 方便我们反复使用
// 需求: 定义一个函数, 这个函数的功能,输出haha hehe xixi
function fn() {
console.log('haha')
console.log('hehe')
console.log('xixi')
}
fn()
fn()
fn()
// 函数的参数, 并不是每次定义函数的时候, 都需要有
function getSum(a=1, b=100) {
console.log(`a的值是${a},b的值是${b}`)
let sum = 0
for (let i=a;i<=b;i++) {
sum += i
}
console.log(sum)
}
getSum(50, 60)
getSum() // 当没有传递实际参数时, a和b的值是多少? undefined
// 函数如果有形式参数, 但是我们在调用的时候, 没有传递会怎么样?
// 函数依然会进行执行, 只不过参数的值是 undefined
// 1.需求: 如果在没有传递实参的时候, 形参具备默认值呢?
// 默认值的写法: 在形式参数上, 使用=进行赋值
// 当我们没有传递实参的时候, 默认值才会生效, 一旦我们传递了实际参数, 以实际参数为准
</script>
<script>
function getSum(a, b) {
let sum = 0
for (let i=a;i<=b;i++) {
sum += i
}
// 把计算出来的结果 sum 给函数的调用者
return sum // 这行代码的意思, 将计算出来的结果sum传递给了调用者
}
let num1 = getSum(50, 60) // 这一次计算50~60的累加和, 把计算的结果 alert()
alert(num1)
let num2 = getSum(30, 40) // 这一次计算是30~40的累加, 把计算的结果 document.write()
document.write(num2)
</script>
day5
<script>
// 写一段代码, 计算1~100之间的累加和
// 使用多次 计算 1~100之间的累加和
// 调用多次函数, 每一次调用的目的是不一样的
// 调用者想对结果进行不同的处理
function getSum(start=1, end=100) {
let sum = 0
for (let i=start;i<=end;i++) {
sum += i
}
return sum
}
// 我们想调用多次 getSum的函数, 每一次调用的目的是不一样的
// getSum() 没有传递数据的时候, 计算的是1~100
// 调用者 想对数据进行不同的处理
let ret1 = getSum(10, 20)
alert(ret1)
let ret2 = getSum(20, 30)
console.log(ret2)
let ret3 = getSum(50, 60)
document.write(ret3)
let num1 = 40
let num2 = 60
getSum(num1, num2)
</script>
匿名函数
<script>
// 函数名的本质,其实就是一个变量而已
let num1 = 10
let num2 = num1
function fn1() { // 这行代码的意思,就是定义了一个变量 fn1 这个fn1代表的是一段代码
console.log('haha')
console.log('hehe')
return 100
}
let temp = fn1 // 这里没有加括号, 把fn1所代表的东西 赋值 给了temp
// 所以fn1是啥, temp就是啥
temp() // 所以temp可以调用
</script>
立即执行函数
<script>
// let fn = function(){
// console.log('haha')
// console.log('hehe')
// }
// fn()
(function(x, y){
let num1 = 100
let num2 = 200
console.log(x + y)
}(10, 20))
;(function(){
console.log('haha')
console.log('hehe')
}())
let num1 = 10
let num2 = 20
(function(){})();
(function(){}());
</script>
<script>
// 这个函数就会将total转变为时分秒的样子
function parseTime(total) {
let hour = parseInt(total / 3600) // 1
hour = hour < 10 ? '0' + hour : hour
let minute = parseInt(total % 3600 / 60)
minute = minute < 10 ? '0' + minute : minute
let second = total % 60
second = second < 10 ? '0' + second : second
return `${hour}:${minute}:${second}`
}
let num = +prompt('请输入一个数字:') // 3700 1 1 40
let ret1 = parseTime(num)
document.write(ret1)
let num1 = +prompt('请输入一个数字:')
let ret2 = parseTime(num1)
alert(ret2)
let temp = 10
temp + 5
console.log(temp)
</script>
对象
<script>
// 1.对象创建的两种方式
// let obj1 = {}
// let obj2 = new Object()
// 2.对象如何存储多项数据?
// 姓名: zhangsan 年龄: 18 身高 175, 还会唱歌, 吃饭
let obj = {
uname: 'zhangsan',
'age': 18,
'height': 175,
'sing': function(){},
eat: function(){}
}
// 对象也是来存储多项数据的, 每一项数据之间用,号隔开, 在数据前面 名字:数据
let obj1 = {
name: '小米手机',
num: '00007879',
weight: 140,
address: '北京小米总公司'
}
</script>
<script>
let obj = {
uname: 'zhangsan',
age: 18,
height: 175
}
// 访问对象元素的方式: 对象.属性
// 对象[属性]
// 方式1: .后面跟上的名字 千万不要加上引号
console.log(obj.age)
console.log(obj.height)
console.log(obj.uname)
// 方式2: 在中括号中, 跟上属性的名字时
console.log(obj['age'])
console.log(obj['uname'])
console.log(obj['height'])
// let arr = [1, 2, 3]
// arr[1] = 100
// for (let i=0;i<arr.length;i++) {
// arr[i]
// }
</script>
<script>
let obj = {
uname: 'zhangsan',
age: 18,
height: 175
}
// console.log(obj.weight)
// let arr = [1, 2, 3]
// console.log(arr[3])
// 增加 weight 的属性 值是 70
obj.weight = 70
// console.log(obj)
</script>
<script>
let obj = {
uname: 'zhangsan',
age: 18,
height: 175
}
// obj.age = 0
// obj.age = ''
// obj.age = undefined
delete obj.age
console.log(obj)
/*
对象相比数组而言, 都可以存储多项数据, 对象可以给每一项数据起名字
1.对象的创建
let obj = {}
2.对象创建时的初始数据
let obj = {
名字1: 数据1,
名字2: 数据2,
名字3: 数据3
}
3.对象可以存储函数吗
静态的属性, 动态的方法 function(){}
let person = {
uname: 'zhangsan',
age: 18,
eat: function(){},
drink: function(){},
run: function(){}
}
4.对象属性的增删改查
查:
对象.属性
对象['属性']
改:
对象.属性 = 值
对象['属性'] = 值
增:
对象.不存在的属性 = 值
对象['不存在的属性'] = 值
删:
delete 对象.属性
*/
</script>
对象的使用
<script>
let obj = {
uname: 'zhangsan',
age: 18,
eat: function(){
console.log('eat...1')
console.log('eat...2')
},
sing: function(songName){
console.log(`我在唱${songName}这首歌`)
}
}
// 如何调用eat和sing
// obj.uname
// obj['uname']
// obj.eat() .的方式调用方法, 是推荐的写法
obj['eat']()
// obj.sing('孤勇者')
// obj.sing('团结就是力量')
obj['sing']('孤勇者')
obj['sing']('团结就是力量')
</script>
<script>
对象的遍历
// let arr = ['haha', 'hehe', 'xixi']
// for (let i=0;i<arr.length;i++) {
// console.log(arr[i])
// }
let obj = {
uname: 'zhangsan',
age: 18,
height: 175
}
// 还是使用for ... in
for (let k in obj) {
console.log(k)
// 属性名是 k 这个变量
// 如何通过 k 得到 这个属性所对应的值
// console.log(obj.k)
console.log(obj[k])
}
</script>
day6
<script>
let ret1 = Math.random() // 这个方法会产生一项新的数据, 这项新的数据是一个0~1之间的随机小数
console.log(ret1)
//let ret2 = Math.ceil(2.2) // 天花板函数, 这个方法又会产生一项新的数据, 这项数据是在2.2的基础之上向上取整
//console.log(ret2)
console.log(Math.ceil(2.2))
console.log(Math.floor(2.7)) // 地板函数, 这个方法产生一项新的数据, 这项数据是在2.7的基础之上 向下取整
let ret3 = Math.max(10, 22, 19, 33, 14) // 在一堆数中, 找出最大值
console.log(ret3)
let ret4 = Math.min(10, 22) // 在一堆数中, 找出最小值
console.log(ret4)
console.log(Math.pow(2, 10)) // 求 2 的 10 次方
console.log(Math.abs(-1.9)) // 绝对值
</script>
<script>
随机数的使用
// let num1 = 12.7
// num1 = Math.ceil(num1)
// console.log(num1)
// let ret = Math.random() // 产生的居然是一个随机小数 0~1
// console.log(ret)
// 两个整数之间的 随机整数 10~20
// 100~500
// 50~80这两个数字之间的一个随机整数
// 50+小于31的数
function getRandom(N, M) {
return N + Math.floor(( M - N + 1) * Math.random())
}
let ret = getRandom(50, 80)
console.log(ret)
</script>
<script>
随机点名
let arr = ['赵云', '黄忠', '张飞', '马超', '刘备', '曹操']
// 随机的产生一个下标
// 这个下标的范围是 0~数组.length-1
function getRandom(N, M) {
return N + Math.floor((M - N + 1) * Math.random())
}
let randomIndex1 = getRandom(0, arr.length - 1)
console.log(arr[randomIndex1])
arr.splice(randomIndex1, 1)
let randomIndex2 = getRandom(0, arr.length - 1)
console.log(arr[randomIndex2])
</script>
猜数字
<script>
function getRandom(N, M) {
return N + Math.floor((M - N + 1) * Math.random())
}
let randomNum = getRandom(1, 100) // 产生一次随机数, 但是需要猜多次
let count = 0
while(true) {
if (count === 3) {
alert('太菜了...')
break
}
let num = +prompt('请输入你所猜的数字:')
count++
if (num < randomNum) {
alert('你猜小了')
} else if (num > randomNum) {
alert('你猜大了')
} else {
alert(`你猜对了, 随机数就是${randomNum}`)
break
}
}
</script>
产生随机颜色
<script>
// rgb(红色, 绿色, 蓝色) 0~255 rgb(255, 255, 255)
// #ffffff
function getRandom(N, M) {
return N + Math.floor((M - N + 1) * Math.random())
}
// 产生rgb的随机颜色
function getRandomColor() {
let num1 = getRandom(0, 255)
let num2 = getRandom(0, 255)
let num3 = getRandom(0, 255)
return `rgb(${num1}, ${num2}, ${num3})`
}
// 产生16进制的随机颜色
function getRandomColor2() {
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
let c1 = arr[getRandom(0, arr.length-1)]
let c2 = arr[getRandom(0, arr.length-1)]
let c3 = arr[getRandom(0, arr.length-1)]
let c4 = arr[getRandom(0, arr.length-1)]
let c5 = arr[getRandom(0, arr.length-1)]
let c6 = arr[getRandom(0, arr.length-1)]
return `#${c1}${c2}${c3}${c4}${c5}${c6}`
}
function getRandomColor3() {
let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
let colorStr = '#'
let i=1
while(i<=6) {
let index = getRandom(0, arr.length-1)
let temp = arr[index]
colorStr = colorStr + temp // #789ABC
i++
}
return colorStr
}
console.log(getRandomColor())
console.log(getRandomColor())
console.log(getRandomColor())
console.log(getRandomColor2())
console.log(getRandomColor2())
console.log(getRandomColor2())
console.log(getRandomColor3())
console.log(getRandomColor3())
console.log(getRandomColor3())
</script>
<script>
写一起
// rgb(红色, 绿色, 蓝色) 0~255 rgb(255, 255, 255)
// #ffffff
function getRandom(N, M) {
return N + Math.floor((M - N + 1) * Math.random())
}
// 产生rgb的随机颜色
function getRandomColor() {
let num1 = getRandom(0, 255)
let num2 = getRandom(0, 255)
let num3 = getRandom(0, 255)
return `rgb(${num1}, ${num2}, ${num3})`
}
function getRandomColor3() {
let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
let colorStr = '#'
let i=1
while(i<=6) {
let index = getRandom(0, arr.length-1)
let temp = arr[index]
colorStr = colorStr + temp // #789ABC
i++
}
return colorStr
}
function getColor(flag=true) {
if (flag) {
let num1 = getRandom(0, 255)
let num2 = getRandom(0, 255)
let num3 = getRandom(0, 255)
return `rgb(${num1}, ${num2}, ${num3})`
} else {
let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
let colorStr = '#'
let i=1
while(i<=6) {
let index = getRandom(0, arr.length-1)
let temp = arr[index]
colorStr = colorStr + temp // #789ABC
i++
}
return colorStr
}
}
console.log(getColor(true)) // 希望你给我rgb的随机颜色
console.log(getColor(false)) // 希望你给我16进制的颜色
console.log(getColor()) // 希望你给我rgb的随机颜色
</script>
日期对象的使用
<script>
// 1.获取当前系统的时间对象
let now = new Date()
console.log(now)
// 2.时间对象获取当前的年份
let year = now.getFullYear()
console.log(year)
// 3.获取当前的月份 getMonth得到的月份 0~11
let month = now.getMonth() + 1
console.log(month)
// 4.获取当前的日子
let day = now.getDate()
console.log(day)
// 5.获取星期几
let dayOfWeek = now.getDay()
console.log(dayOfWeek)
// 6.获取 hour minute second
let h = now.getHours()
let m = now.getMinutes()
let s = now.getSeconds()
console.log(h)
console.log(m)
console.log(s)
</script>
<script>
日期格式化
// 1.获取当前系统的时间对象
let now = new Date()
let year = now.getFullYear()
let month = now.getMonth() + 1
month = month < 10 ? '0' + month : month
let day = now.getDate()
day = day < 10 ? '0' + day : day
let h = now.getHours()
h = h < 10 ? '0' + h : h
let m = now.getMinutes()
m = m < 10 ? '0' + m : m
let s = now.getSeconds()
s = s < 10 ? '0' + s : s
let str = `${year}-${month}-${day} ${h}:${m}:${s}`
console.log(str)
</script>
<script>
日期对象的细节
let now = new Date() // 没有传参数, 就是创建当前的日期对象
console.log(now)
let d = new Date('2023-02-04 00:00:00') // 传递了时间字符串的参数, 将会创建指定时间的日期对象
console.log(d.getFullYear())
console.log(d.getMonth()+1)
console.log(d.getDate())
console.log(d.getDay())
</script>
<script>
倒计时的效果
// let now = new Date()
// console.log(now.getTime()) // now.getTime() 得到的是一个很大的数字 这个数字代表 当前的时间距离 1970-01-01 08:00:00 时间过去了多少毫秒
// let d = new Date('2023-02-09 20:00:00')
// (d.getTime() - now.getTime()) // 1000 3700
// 01:01:40
// 调用者给我一个时间字符串, 我就需要计算出 距离这个时间还剩多少小时多少分钟多少秒
function countDown(timeStr) {
let d = new Date(timeStr) // 指定时间的日期对象
let now = new Date() // 得到当前时间的日期对象
let distance = parseInt((d.getTime() - now.getTime())/1000) // 3700
let h = parseInt(distance / 3600)
h = h < 10 ? '0' + h : h
let m = parseInt(distance % 3600 / 60)
m = m < 10? '0' + m: m
let s = distance % 60
s = s < 10 ? '0' + s: s
console.log(`${h}:${m}:${s}`)
}
// countDown('2023-02-09 20:00:00')
countDown('2023-02-09 22:00:00')
</script>