Day01-API

1.变量声明

1.优先选择const

  1. 建议数组和对象都用const来声明

1.1 引用数据类型修改仍可用const

只要地址不修改,它也不会报错

js 复制代码
<script>
        1.数组即使追加也可以定义成const
        因为数组地址没变
        const arr = ['莎莎','vv']
        arr.push('鑫鑫')
        console.log(arr);
        下面这样会报错,因为这样子是开辟了一个新地址,并且赋给了arr
        arr = [1,2,3]
        console.log(arr);       
    </script>

2.API作用与分类

3.什么是DOM

Document Object Model----文档对象模型

作用:通过js操作网页内容,实现用户放纵

4.DOM树

document是DOM提供的一个对象,网页中所有内容都在document里面

5.DOM对象(重要)

html的标签 js获取后就变成了对象

核心:把内容当对象处理

6.获取DOM对象

1.根据CSS选择器来获取DOM元素(重点)

2.其他获取DOM元素的方法(了解)

6.1 利用css选择器来获取

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 200px;
            height: 200px;
        }
        #nav {
            background-color: pink;
        }
    </style>
</head>
<body>
    <div class="box">123</div>
    <div class="box">456</div>
    <p id="nav">导航栏</p>
    <ul>
        <li>啦啦啦1</li>
        <li>啦啦啦2</li>
        <li>啦啦啦3</li>
    </ul>
    <script>
    // 1. 获取匹配的第一个元素
    const box1 = document.querySelector('div')
    console.log(box1)
    const box2 = document.querySelector('box')
    console.log(box2)
    // id选择器一定要加#号
    const nav = document.querySelector('#nav')
    nav.style.background = 'green'
    console.log(nav);
    // 获取第一个li
    const li = document.querySelector('ul li:first-child')
    console.log(li);

    //2.选择所有的小li
    const lis = document.querySelectorAll('ul li')
    console.log(lis);
    </script>
</body>
</html>  
  • 遍历得到的伪数组
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 200px;
            height: 200px;
        }
        #nav {
            background-color: pink;
        }
    </style>
</head>
<body>
    <div class="box">123</div>
    <div class="box">456</div>
    <p id="nav">导航栏</p>
    <ul class="nav">
        <li>啦啦啦1</li>
        <li>啦啦啦2</li>
        <li>啦啦啦3</li>
    </ul>

    <script>
        // 遍历这个伪数组
        const lis = document.querySelectorAll('.nav li')
        for(let i = 0; i < lis.length; i++){
            console.log(lis[i])
        }
    </script>
</body>
</html>

6.2 其他方法

7.操作元素的内容

7.1 对象.innerText属性

js 复制代码
    <script>
        // 1.获取元素
        const box = document.querySelector('.box')
        // 2.修改文字内容
        console.log(box.innerText)
        box.innerText = '我是莎莎'
        console.log(box.innerText);
    </script>

7.2 对象.innerHTML属性

7.3 年会抽奖案例

js 复制代码
<script>
    // 1.声明数组
    const arr = ['莎莎','vv','鑫鑫','大伟','坤哥']
    // 2.随机生成一个数字
    for(let i = 0; i < 3; i++){
        let random = Math.floor(Math.random()*arr.length)
        // 获取这个元素并修改
        if(i === 0){
            const span = document.querySelector('.wrapper #one')
            span.innerText = arr[random]
        }else if(i=== 1){
            const span = document.querySelector('.wrapper #two')
            span.innerText = arr[random]
        }else{
            const span = document.querySelector('.wrapper #three')
            span.innerText = arr[random]
        }
        arr.splice(random,1)
        
    }
  </script>

8.操作元素属性

8.1 操作元素常用属性href、src、title

8.1.1 随机刷新图片案列

js 复制代码
<body>
    <img src="./images/1.webp" alt="">
    <script>
        function getRandom(min, max) {
            // 先处理边界:如果min > max,交换两者
            if (min > max) [min, max] = [max, min];
            // 核心公式:Math.floor(Math.random() * (max - min + 1)) + min
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        // 1.获取图片对象
        const img = document.querySelector('img')  
        // 2.修改图片的src属性
        const random = getRandom(1,6)

        img.src = `./images/${random}.webp`
        img.title = '这就是你啊' 

    </script>
</body>

8.2 操作元素样式属性

8.2.1 通过style修改

  1. body的样式就不需要获取了,可以直接使用,因为body是唯一的

2.css中遇到bckground-image这种,用小驼峰解决,写成backgroundImage

js 复制代码
<body>
    <div class="box"></div>
    <script>
        // 1.获取元素
        const box = document.querySelector('.box')
        // 2.修改样式属性,别忘了加单位
        box.style.width = '300px'
        // 遇到css总-的命名方式,用小驼峰命名法解决
        box.style.backgroundColor = 'blue'
        // 加边框
        box.style.border = '2px solid red'
        box.style.borderTop = '5px solid pink'
    </script>
</body>
js 复制代码
<script>
        // 因为body是唯一的,所以不需要获取
        function getRandom(min, max) {
            // 先处理边界:如果min > max,交换两者
            if (min > max) [min, max] = [max, min];
            // 核心公式:Math.floor(Math.random() * (max - min + 1)) + min
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        const random = getRandom(1,10)
        document.body.style.backgroundImage = `url(./images/desktop_${random}.jpg)`
        
    </script>

8.2.2 通过className来修改

好处:简洁

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            height: 200px;
            width: 200px;
            background-color: pink;
        }
        .nav {
            color: red;
        }

        .box {
            width: 300px;
            height: 300px;
            background-color: skyblue;
            margin: 20px auto;
            padding: 10px;
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <div class="nav">可爱莎莎</div>
    <script>
        // 1.获取元素
        const div = document.querySelector('div')
        // 2.添加类名,并且会覆盖前面的类型
        div.className = 'box'
        // 3.如果想保留之前的类名,可以使用下面的方法
        div.className = 'nav box'
    </script>
</body>
</html>

8.2.3 通过classList操作类控制css

这个是用的最多的

8.2.4 随机切换轮播图

html 复制代码
<!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>轮播图点击切换</title>
  <style>
    * {
      box-sizing: border-box;
    }

    .slider {
      width: 560px;
      height: 400px;
      overflow: hidden;
    }

    .slider-wrapper {
      width: 100%;
      height: 320px;
    }

    .slider-wrapper img {
      width: 100%;
      height: 100%;
      display: block;
    }

    .slider-footer {
      height: 80px;
      background-color: rgb(100, 67, 68);
      padding: 12px 12px 0 12px;
      position: relative;
    }

    .slider-footer .toggle {
      position: absolute;
      right: 0;
      top: 12px;
      display: flex;
    }

    .slider-footer .toggle button {
      margin-right: 12px;
      width: 28px;
      height: 28px;
      appearance: none;
      border: none;
      background: rgba(255, 255, 255, 0.1);
      color: #fff;
      border-radius: 4px;
      cursor: pointer;
    }

    .slider-footer .toggle button:hover {
      background: rgba(255, 255, 255, 0.2);
    }

    .slider-footer p {
      margin: 0;
      color: #fff;
      font-size: 18px;
      margin-bottom: 10px;
    }

    .slider-indicator {
      margin: 0;
      padding: 0;
      list-style: none;
      display: flex;
      align-items: center;
    }

    .slider-indicator li {
      width: 8px;
      height: 8px;
      margin: 4px;
      border-radius: 50%;
      background: #fff;
      opacity: 0.4;
      cursor: pointer;
    }

    .slider-indicator li.active {
      width: 12px;
      height: 12px;
      opacity: 1;
    }
  </style>
</head>

<body>
  <div class="slider">
    <div class="slider-wrapper">
      <img src="./images/slider01.jpg" alt="" />
    </div>
    <div class="slider-footer">
      <p>对人类来说会不会太超前了?</p>
      <ul class="slider-indicator">
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
      </ul>
      <div class="toggle">
        <button class="prev">&lt;</button>
        <button class="next">&gt;</button>
      </div>
    </div>
  </div>
  <script>
    // 1. 初始数据,这是一个数组对象
    const sliderData = [
      { url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },
      { url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },
      { url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },
      { url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },
      { url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },
      { url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },
      { url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },
      { url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' },
    ]
    // 2.需要一个随机数
    const random = Math.floor(Math.random() * sliderData.length)
    // 3.获取图片
    const img = document.querySelector('.slider-wrapper img')
    // 4.修改图片路径
    img.src = sliderData[random].url
    // 5.获取文字
    const text = document.querySelector('.slider-footer p')
    // 6.修改文字内容
    text.innerHTML = sliderData[random].title
    // 7.修改底部颜色,括号里面要写css选择器
    const footer = document.querySelector('.slider-footer')
    footer.style.backgroundColor = sliderData[random].color

    // 8.修改底部小圆点高亮特效
    const li = document.querySelector(`.slider-indicator li:nth-child(${random+1})`)
    li.classList.add('active')
  </script>
</body>

</html> 

8.3 操作表单元素属性

相关推荐
Nan_Shu_6147 小时前
学习:Vue (2)
javascript·vue.js·学习
一水鉴天8 小时前
整体设计 定稿 之24+ dashboard.html 增加三层次动态记录体系仪表盘 之2 程序 (Q208 之2)
开发语言·前端·javascript
二狗哈9 小时前
Cesium快速入门17:与entity和primitive交互
开发语言·前端·javascript·3d·webgl·cesium·地图可视化
GISer_Jing9 小时前
AI驱动营销增长:7大核心场景与前端实现
前端·javascript·人工智能
星光不问赶路人9 小时前
new Array() 与 Array.from() 的差异与陷阱
javascript·面试
T___T10 小时前
Vue 3 做 todos , ref 能看懂,computed 终于也懂了
前端·javascript·面试
cindershade10 小时前
JavaScript 事件循环机制详解及项目中的应用
前端·javascript
王霸天10 小时前
🚀 告别“变形”与“留白”:前端可视化大屏适配的终极方案(附源码)
前端·javascript
LYFlied10 小时前
Vue版本演进:Vue3、Vue2.7与Vue2全面对比
前端·javascript·vue.js