Web APIs(二)

排它思想

如果有同一组数据,我们想要为某一个元素单独设置样式,需要使用for循环的排它思想

思路如下

  • 清除所有元素的样式
  • 单独为当前元素设置样式
  • 顺序不能颠倒
  • this是指当前事件的调用者。

排它思想之习题一

点击当前按钮,背景色变为紫色

<!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>
        button {
            color: red;
            font-family: '楷体';
            margin-right: 50px;
        }
    </style>
</head>

<body>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
    <button>按钮</button>
</body>
<script>
    var bths = document.getElementsByTagName('button');

    //   for循环:为每个button设置onclick事件
    for (var i = 0; i < bths.length; i++) {
        bths[i].onclick = function() {
            // for循环 清除所有button的背景色;
            for (var i = 0; i < bths.length; i++) {
                bths[i].style.backgroundColor = ''
            };
            this.style.backgroundColor = 'purple'

        }
    }
</script>

</html>

在这里插入图片描述

排它思想之百度换肤

核心思路:利用for循环 遍历所有图片,把当前图片的路径赋值给body作为背景


<!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>
        * {
            margin: 0;
            padding: 0;
        }
        
        body {
            background: transparent url(./images/girl.jpg) no-repeat center top;
        }
        
        ul {
            list-style: none;
            width: 1000px;
            margin: 20px auto;
        }
        
        ul li img {
            float: left;
            width: 200px;
            border: 5px solid #fff;
        }
    </style>
</head>

<body>
    <ul>
        <li><img src="./images/girl.jpg" alt=""></li>
        <li><img src="./images/girl2.jpg" alt=""></li>
        <li><img src="./images/girl3.jpg" alt=""></li>
        <li><img src="./images/girl4.jpg" alt=""></li>
    </ul>
</body>
<script>
    // 获取事件源
    var imgs = document.querySelector('ul').getElementsByTagName('img');
    // 循环:为所有的img绑定点击事件
    for (var i = 0; i < imgs.length; i++) {
        imgs[i].onclick = function() {
            // 把当前图像的路径赋值给bady
            document.body.style.backgroundImage = 'url(' + this.src + ')'
        }
    }
</script>

</html>

在这里插入图片描述

排它思想之表格隔行变色

新的事件: mouseover鼠标经过 onmouseout:鼠标离开

核心思路

  • 遍历tody里面的tr并绑定事件
  • 鼠标经过当前行的时候,当前行变色,鼠标离开当前行的时候,当前行的背景色清除
  • 获取tbody里面的行
<!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>
        table {
            width: 1000px;
            height: 200px;
            margin: 20px auto;
        }
        
        table,
        tr,
        th,
        td {
            text-align: center;
            border: 1px solid red;
            border-collapse: collapse;
        }
        
        thead {
            background-color: steelblue;
        }
        
        .bg {
            background-color: pink;
        }
    </style>
</head>

<body>
    <table>
        <thead>
            <tr>
                <th>代码</th>
                <th>名称</th>
                <th>最新公布净值</th>
                <th>累计净值</th>
                <th>前单位净值</th>
                <th>净值增长率</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
        </tbody>
    </table>
</body>
<script>
    // 获取事件源
    var trs = document.querySelector('tbody').querySelectorAll('tr');
    // 循环并绑定事件
    for (var i = 0; i < trs.length; i++) {
        // 鼠标经过时 tody里面的行改变背景色
        trs[i].onmouseover = function() {
                this.className = 'bg'
            }
            // 鼠标离开时 tody里面的行清除背景色
        trs[i].onmouseout = function() {
            this.className = ''
        }
    }
</script>

</html>

在这里插入图片描述

排它思想之全选反选按钮

1.全选思路:复选框的按钮checked属性(选中状态)跟随全选按钮变化

2.反选思路:给所有的复选框绑定点击事件,每次点击 都要循环查看下面所有的复选框是否选中 倘若有一个没选中 上面全选按钮就不选中

3.可以设置一个变量  来控制全选按钮是否选中
<!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>
        * {
            margin: 0;
            padding: 0;
        }
        
        table {
            width: 800px;
            margin: 20px auto;
        }
        
        thead tr {
            background: skyblue;
        }
        
        table,
        th,
        tr,
        td {
            text-align: center;
            border: 1px solid red;
            border-collapse: collapse;
        }
    </style>
</head>

<body>
    <table>
        <thead>
            <tr>
                <th> <input type="checkbox"> </th>
                <th>商品</th>
                <th>价格</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td> <input type="checkbox"> </td>
                <td>苹果</td>
                <td>5元/斤</td>
            </tr>
            <tr>
                <td> <input type="checkbox"> </td>
                <td>香蕉</td>
                <td>6元/斤</td>
            </tr>
            <tr>
                <td> <input type="checkbox"> </td>
                <td>梨子</td>
                <td>10元/斤</td>
            </tr>
        </tbody>
    </table>
</body>
<script>
    // 获取事件源
    var input_All = document.querySelector('thead').querySelector('input');
    var inputs = document.querySelector('tbody').querySelectorAll('input');
    console.log(inputs);

    // 全选:绑定事件并进行事件处理程序
    input_All.onclick = function() {
            for (var i = 0; i < inputs.length; i++) {
                inputs[i].checked = this.checked;
            }
        }
        // 反选:循环 给所有的复选框设置绑定事件  每次点击 都要循环查看下面所有的复选框是否选中 倘若有一个没选中 上面全选按钮就不选中;
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].onclick = function() {
            // 用一个变量来控制全选按钮是否选中
            var flag = true;
            for (var i = 0; i < inputs.length; i++) {
                if (!inputs[i].checked) {

                    flag = false


                }

            };
            input_All.checked = flag
        }
    }
</script>

</html>

在这里插入图片描述

自定义属性

获取自定义属性值

  • element.属性:获取内置属性
  • element.getAttribute(‘属性’):获取自定义属性

<!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>
</head>

<body>
    <div class="box" index='2'></div>
</body>
<script>
    var box = document.querySelector('.box');
    console.log(box);
    console.log(box.className);
    console.log(box.getAttribute('index'));
</script>

</html>

在这里插入图片描述

设置属性值

  • element.属性 = “值” 主要对内置属性的值进行设置
  • element.setAttribute(‘自定义属性’,‘值’) 主要对自定义属性的值进行设置

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>设置自定义属性</title>
</head>

<body>
    <div class="box" index='2'></div>
</body>
<script>
    // 设置属性
    let box = document.querySelector('.box');
    box.className = 'boxs';
    box.setAttribute('index', '4');
    console.log(box);
</script>

</html>

在这里插入图片描述

移除属性值

removeAttribute(‘属性值’) :移除属性值

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>移除自定义属性</title>
</head>

<body>
    <div class="box" index='4'></div>
</body>
<script>
    let box = document.querySelector('.box');
    box.removeAttribute('index');
    console.log(box);
</script>

</html>


在这里插入图片描述

自定义属性之tab栏切换

案例分析

  1. tab栏分为tab_list与tab_item部分
  2. 把tab_list中的li循环并注册事件 为每个tab_list下面的li设置类名 并且类名的索引是有顺序的
  3. 使用排他思想 点击li时 相对应的items显示 其他的li与item设置隐藏
<!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>自定义属性之tab栏切换</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        .tab {
            width: 850px;
            margin: 20px auto;
        }
        
        .tab_list ul {
            overflow: hidden;
            list-style: none;
        }
        
        .tab_list ul li {
            float: left;
            cursor: pointer;
            width: 200px;
            height: 40px;
            border: 1px solid #ccc;
            text-align: center;
            line-height: 40px;
        }
        
        .bg {
            background-color: pink;
        }
        
        .tab_item .items {
            display: none;
            width: 808px;
            height: 40px;
            text-align: center;
            line-height: 40px;
            margin-bottom: 1px;
            background-color: red;
        }
        
        .tab_item .items:nth-of-type(1) {
            display: block;
        }
    </style>
</head>

<body>
    <div class="tab">
        <div class="tab_list">
            <ul>
                <li>选项一</li>
                <li>选项二</li>
                <li>选项三</li>
                <li>选项四</li>
            </ul>
        </div>

        <div class="tab_item">
            <div class="items">内容1</div>
            <div class="items">内容2</div>
            <div class="items">内容3</div>
            <div class="items">内容4</div>
        </div>
    </div>
</body>
<script>
    // 获取事件源
    var lis = document.querySelector('.tab_list').querySelectorAll('li');
    var items = document.querySelector('.tab_item').querySelectorAll('.items');

    // 绑定事件并进行事件处理程序;
    for (var i = 0; i < lis.length; i++) {
        lis[i].setAttribute('index', i)
        lis[i].onclick = function() {
            for (var i = 0; i < lis.length; i++) {
                lis[i].className = ''
            }
            this.className = 'bg';
            var index = this.getAttribute('index');
            for (var i = 0; i < items.length; i++) {
                items[i].style.display = 'none'
            }
            items[index].style.display = 'block'
        }
    }
</script>

</html>

在这里插入图片描述

H5新增自定义属性的方法

自定义属性的目的:保存并使用数据 将数据保存到页面而不是数据库

H5规定自定义属性data-开头作为属性并且赋值

获取H5自定义属性

  • 兼容性写法 element.getAttribute(‘data-index’);
  • H5新增 element.dataset.index IE11才开始兼容

<!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>获取H5自定义属性</title>
</head>

<body>
    <div data-index="5" data-list-name='尧子陌'></div>
</body>
<script>
    var box = document.querySelector('div');
    // 兼容性获取H5自定义属性
    console.log(box.getAttribute('data-index'));
    console.log(box.getAttribute('data-list-name'));

    // H5新增获取H5自定义属性
    console.log(box.dataset.index);
    console.log(box.dataset['index']);
    console.log(box.dataset.listName);
    console.log(box.dataset['listName']);
</script>

</html>

在这里插入图片描述

节点操作

节点获取元素

在这里插入图片描述

  • 通过DOM自带的方法获取元素
  • 通过节点的方法获取元素

节点至少拥有nodeType(节点类型) nodeName(节点名称) nodeValue(节点值)三个基本属性

在这里插入图片描述

<!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>
</head>

<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>
<script>
    var son = document.querySelector('.son');
    console.log(son.parentElement);
</script>

</html>

在这里插入图片描述

父节点

node.parentNode

注意事项

  • 查找的是离自己最近的父节点
  • 如若找不到自己的父节点,则返回null;

<!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>
</head>

<body>
    <div class="grandfather">
        <div class="father">
            <div class="son"></div>
        </div>
    </div>
</body>
<script>
    var son = document.querySelector('.son');
    console.log(son.parentNode);
</script>

</html>


在这里插入图片描述

子节点

  • parentNode.childNodes 包括文本节点及子元素节点
  • parentNode.children 只返回自己的子元素节点

<!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>
</head>

<body>
    <ul>
        <li>Hello Word</li>
        <li>Hello Word</li>
        <li>Hello Word</li>
        <li>Hello Word</li>
    </ul>
</body>
<script>
    var ul = document.querySelector('ul');
    console.log(ul.childNodes);

    // 利用for循环 查找所有子元素节点
    for (var i = 0; i < ul.childNodes.length; i++) {
        if (ul.childNodes[i].nodeType === 1) {
            console.log(ul.childNodes[i]);
        }
    }
    // 利用ul.children打印所有的子元素节点
    console.log(ul.children);
</script>

</html>

在这里插入图片描述

子节点的使用

  • parentNode.firstChild:返回第一个子节点,包含所有节点
  • parentNode.lastChild:返回最后一个子节点,包含所有节点
  • parentNode.firstElementChild 返回第一个子元素节点
  • parentNode.lastElementChild 返回最后一个子元素节点

以上方法都是有兼容性,找不到子节点则返回null


<!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>
</head>

<body>
    <ol>
        <li>第1个孩子</li>
        <li>第2个孩子</li>
        <li>第3个孩子</li>
        <li>第4个孩子</li>
    </ol>
</body>
<script>
    var ol = document.querySelector('ol');
    // 返回第一个子节点与最后一个子节点(包括文本节点)
    console.log(ol.firstChild);
    console.log(ol.lastChild);

    // 返回第一个子元素节点与最后一个子元素节点
    console.log(ol.firstElementChild);
    console.log(ol.lastElementChild);

    // 实际开发的做法
    console.log(ol.children[0]);
    console.log(ol.children[ol.children.length - 1]);
</script>

</html>

在这里插入图片描述

新浪导航栏案例(重点)

思路如下

  • 循环注册事件
  • 当鼠标经过li时,ul显示,当鼠标离开li时,ul隐藏


<!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>
        * {
            margin: 0;
            padding: 0;
        }
        
        a {
            text-decoration: none;
        }
        
        ul.box {
            list-style: none;
            width: 600px;
            margin: 20px auto;
        }
        
        ul.box>li {
            position: relative;
            float: left;
            margin-right: 20px;
        }
        
        ul.box ul {
            position: absolute;
            top: 40px;
            left: 0;
            display: none;
        }
        
        ul.box>li>a:nth-of-type(1),
        ul.box ul li {
            display: block;
            width: 150px;
            height: 40px;
            text-align: center;
            line-height: 40px;
            text-decoration: none;
            border: 1px solid red;
        }
        
        ul.box ul li {
            border: 1px solid black;
        }
        
        ul.box ul li:hover {
            background-color: pink;
        }
    </style>
</head>

<body>
    <ul class="box">
        <li>
            <a href="#">微博</a>
            <ul>
                <li>
                    <a href=" # ">评论</a>
                </li>
                <li>
                    <a href="# ">私信</a>
                </li>
                <li>
                    <a href="# ">@我</a>
                </li>

            </ul>
        </li>
        <li>
            <a href="# ">博客</a>
            <ul>
                <li>
                    <a href="# ">微博提醒</a>
                </li>
                <li>
                    <a href="# ">未读提醒</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="# ">注册</a>
            <ul>
                <li>
                    <a href="# ">注册</a>
                </li>
                <li>
                    <a href="# ">登录</a>
                </li>
            </ul>
        </li>
    </ul>
</body>
<script>
    // 获取事件源
    var ul = document.querySelector('.box');
    var lis = ul.children

    for (var i = 0; i < lis.length; i++) {
        lis[i].onmouseover = function() {
            this.children[1].style.display = 'block';
            this.style.backgroundColor = 'red'
        }
        lis[i].onmouseout = function() {
            this.children[1].style.display = 'none';
            this.style.backgroundColor = ''
        }
    }
</script>

</html>

在这里插入图片描述

兄弟节点

  • node.nextSibling 获取下一个节点(包括文本节点)

  • node.previousSibling 获取上一个节点(包括文本节点)

  • node.nextElementSibling 获取下一个兄弟子元素节点

  • node.previousElementSibling 获取上一个兄弟元素节点

注意:以上方法都有兼容性 找不到则返回null

在这里插入图片描述


<!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>
</head>

<body>
    <p></p>
    <div></div>
    <h5></h5>
</body>
<script>
    var box = document.querySelector('div');
    console.log(box.previousSibling); //上一个兄弟节点
    console.log(box.nextSibling); //下一个兄弟节点

    console.log(box.previousElementSibling); //上一个兄弟元素节点
    console.log(box.nextElementSibling); //下一个兄弟元素节点
</script>

</html>

在这里插入图片描述

添加元素

创建节点
在这里插入图片描述

页面中添加新的元素,需要两步:创建元素 添加元素

在这里插入图片描述

node.insertBefore     前面追加元素

<!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>
</head>

<body>
    <ul></ul>
</body>
<script>
    // 创建元素
    var ul = document.querySelector('ul');

    var li = document.createElement('li');
    li.innerHTML = "<strong>Hello Word</strong>";
    ul.appendChild(li)

    var input = document.createElement('input');
    input.type = 'password'
    ul.insertBefore(input, ul.children[0])
</script>

</html>

在这里插入图片描述

留言板功能

思路
1.点击按钮时 动态创建li追加到ul
2.追加元素的同时 文本域的值赋值给li
3.如果将新创建的元素追加至父元素中子元素的前面 使用appendChild 反之insertBefore

<!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>
        textarea {
            resize: none;
            outline: none;
            vertical-align: bottom;
        }
    </style>
</head>

<body>
    <textarea name="" id="" cols="30" rows="10"></textarea>
    <button>添加</button>
    <ul></ul>
</body>
<script>
    // 获取元素
    var text = document.querySelector('textarea');
    var bth = document.querySelector('button');
    var ul = document.querySelector('ul');

    bth.onclick = function() {
        var flag = true;
        if (text.value === '') {
            alert('请输入内容');
            flag = false;
            return flag
        } else {
            var li = document.createElement('li');
            li.innerHTML = text.value;
            ul.insertBefore(li, ul.children[0]);
            text.value = ''
        }
    }
</script>

</html>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计一个webapis学生报名系统的代码步骤如下: 1. 数据库设计:首先确定需要存储的数据,例如学生的基本信息,课程信息等。根据需求设计数据库表结构,并创建相应的表。 2. 后端接口设计:根据系统需求,设计后端接口,包括学生信息的录入、查询、修改和删除等功能。使用合适的编程语言,如Java、Python等,实现这些接口。 3. 前端界面设计:设计一个用户友好的前端界面,包括学生报名表单和查询功能。使用HTML、CSS、JavaScript等技术实现界面的布局和交互,确保用户能够方便地输入和查询信息。 4. 前后端交互:通过AJAX或其他技术,实现前后端的数据交互。前端向后端发送请求,后端处理请求并返回相应的数据。 5. 学生信息录入:在前端界面设计好的报名表单中,用户输入个人信息,通过调用后端接口将数据传递到后台。后台接收并验证输入的数据,并将学生信息存储到数据库中。 6. 学生信息查询:在前端界面设计好的查询功能中,用户输入需要查询的条件,通过调用后端接口将查询条件传递到后台。后台根据查询条件在数据库中查找匹配的学生信息,并将查询结果返回给前端。 7. 学生信息修改和删除:在前端界面设计好的修改和删除功能中,用户选择需要修改或删除的学生信息,并通过调用后端接口将相应的操作请求传递到后台。后台根据请求进行相应的操作,更新或删除数据库中的对应数据。 8. 错误处理和数据校验:在整个系统设计过程中,需要考虑错误处理和数据校验。在后端接口中,对输入的数据进行合法性检查,确保输入的数据符合要求。在前端界面中,对用户的输入进行格式验证,及时反馈给用户。 9. 安全性保障:为了保障系统的安全性,可以采用身份认证、权限控制等机制,确保只有授权的用户能够进行报名和查询等操作。 10. 测试和部署:在完成系统开发后,进行系统的测试和调试。确保系统的正确性和稳定性。最后将系统部署到服务器上,供用户使用。 以上是一个简单的webapis学生报名系统代码步骤,具体实现还需要根据具体需求进行调整和完善。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值