js基础知识练习

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>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值