JavaScript-3

使用JavaScript和D3.js实现数据可视化 介绍 D3.js是一个JavaScript库。它的全称是Data-Driven Documents(数据驱动文档),并且它被称为一个互动和动态的数据可视化库网络。2011年2月首次发布,在撰写本文时,最新的稳定版本是4.4版本,并且不断更新。D3利用可缩放矢量图形或SVG格式,允许您渲染可放大或缩小的形状,线条和填充,而不会降低质量。本教程将指导您使用JavaScript D3库创建条形图。 ... 阅读详情

Web API 基本认知

作用和分类

  • 作用:就是使用 JS 去操作 html 和 浏览器
  • 分类:DOM ( 文档对象模型 )、BOM ( 浏览器对象模型 )

DOM 是什么

  • DOM ( Document Object Model —— 文档对象模型 )
  • 它是用来呈现以及与任意 HTML 或 XML 文档交互的 API
  • 通俗的说,DOM 是浏览器提供的一套专门用来"操作网页内容"的功能

DOM 树

  • 什么是 DOM 树:将HTML文档以树状结构直观表现出来,我们称之为文档树或DOM树

  • 作用:文档树直观的体现了标签与标签之间的关系

在这里插入图片描述

DOM 对象

Dom 的思想核心:把网页内容当作对象来处理

  • 浏览器根据 html 标签生成的 JS 对象
  • 所有的标签属性都可以在这个对象上面找到
  • 修改这个对象的属性会自动映射到标签身上

document 对象

  • 是 DOM 里面提供的一个对象
  • 用来访问和操作网页内容
  • 网页所有内容都在 document 里面

获取 DOM 对象

  • 方式一:根据 CSS 选择器来获取 DOM 元素(重点)
  • 方式二:其他获取 DOM 元素方法(了解)

方式一

具体内容

  • 成功匹配的所有元素中,取第一个元素
语法:
	document.querySelector('CSS选择器')

返回值:CSS选择器匹配成功的所有元素中的第一个元素,是一个HTMLElement对象
  • 成功匹配的所有元素中,取所有元素
语法:
	document.querySelectorAll('CSS选择器')

返回值:CSS选择器匹配成功的所有元素,是一个装有HTMLElement对象的数组

演示部分

<body>
    <div>111</div>
    <div>222</div>
    <div class="box">aaa</div>
    <div class="box">bbb</div>
    <div class="box">ccc</div>
    <div id="d1">ddd</div>
    <ul>
        <li>li-1</li>
        <li>li-2</li>
        <li>li-3</li>
    </ul>

    <script>
        const a = document.querySelector('.box')
        console.log(a);

        const d = document.querySelector('#d1')
        console.log(d);

        const li = document.querySelector('li')
        console.log(li);

        const lis = document.querySelectorAll('ul li')
        console.log(lis);
    </script>
</body>

方式二

    <script>
        // 根据id获取一个元素
        document.getElementById('nav')
        // 根据'标签名'获取一类元素
        document.getElementsByTagName('div')
        // 根据'类名'获取对应元素
        document.getElementsByClassName('box')
    </script>

操作元素内容

innerText

<body>
    <div>欢迎光临</div>
    <div class="box">我是Peter</div>
    <div class="top">搜索框</div>
    
    <script>
        // 1. 获取元素对象
        const box = document.querySelector('.box')

        // 2. 修改文字内容
        console.log(box.innerText);     // 输出内容:我是Peter
        box.innerText = '我是Jack'      // 注意:innerText 只显示纯文本,不解析标签
        // 例如:box.innerText = '<strong>我是Jack</strong>' 是解析不了标签的
    </script>
</body>

innerHTML

<body>
    <div>欢迎光临</div>
    <div class="box">我是Peter</div>
    <div class="top">搜索框</div>

    <script>
        // 1. 获取元素对象
        const box = document.querySelector('.box')

        // 2. 修改文字内容
        box.innerHTML = '<strong>我是Jack</strong>'
    </script>
</body>

操作元素属性

操作元素的常用属性

<body>
    <img src="./images/img2.png" alt="">

    <script>
        // 1. 获取图片对象
        const img = document.querySelector('img')

        // 2. 修改图片对象的属性值
        img.src = './images/img3.png'
    </script>
</body>

操作元素的样式属性

方式一

  • 通过 style 属性操作 CSS
<body>
    <div class="box"></div>

    <script>
        // 1. 获取对象
        const box = document.querySelector('.box')

        // 2. 修改对象的样式的属性值
        box.style.width = '300px'
        box.style.backgroundColor = 'green'
    </script>
</body>

方式二

  • 操作类名 ( className ) 操作 CSS
<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;
            background-color: pink;
        }

        .active {
            margin: 0 auto;
            width: 300px;
            height: 300px;
            background-color: bisque;

        }

        .radius {
            border-radius: 50%;
        }
    </style>
</head>

<body>
    <div class="box"></div>

    <script>
        // 1. 获取对象
        const box = document.querySelector('.box')

        // 2. 通过改'类名'的方式,去修改对象的样式
        box.className = 'active radius'
    </script>
</body>

方式三(重点)

  • 通过 classList 操作类控制 CSS

    作用:为了解决 className 容易覆盖以前的类名,我们可以通过 classList方式追加和删除类名

<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;
            background-color: pink;
        }

        .active {
            margin: 0 auto;
            width: 300px;
            height: 300px;
            background-color: bisque;

        }

        .radius {
            border-radius: 50%;
        }
    </style>
</head>

<body>
    <div class="box"></div>

    <script>
        // 1. 获取对象
        const box = document.querySelector('.box')

        // 追加一个类
        box.classList.add('active')
        // 删除一个类
        box.classList.remove('active')
        // 切换一个类
        // 判断这个类有没有,有就删掉,没有就加上,即:类似'取反'的效果
        box.classList.toggle('radius')
    </script>
</body>

操作表单元素属性

标准属性

  • 标签天生自带的属性,比如 class、id、title 等,可以直接使用点语法操作,比如:disabled、checked、selected
<body>
    <input type="text" value="电脑">

    <script>
        const ipt = document.querySelector('input')
        ipt.value = '书包'
    </script>
</body>
<body>
    <input type="checkbox" name="" id="" checked>

    <script>
        const ipt = document.querySelector('input')
        ipt.checked = false
    </script>
</body>
<body>
    <button disabled>点击</button>

    <script>
        const btn = document.querySelector('button')
        btn.disabled = false
    </script>
</body>

自定义属性(重点)

  • 在 html 5 中推出来了专门的 data-自定义属性
  • 在标签上一律以 data- 开头
  • 在 DOM 对象上一律以 dataset 对象方式获取
<body>
    <div data-id="haha" data-spm="run">第1个</div>
    <div>第2个</div>
    <div>第3个</div>

    <script>
        const one = document.querySelector('div')
        console.log(one.dataset.id);    // haha
        console.log(one.dataset.spm);   // run
    </script>
</body>

定时器

间歇函数

使用场景

    网页中经常会需要有一种功能:每隔一段时间需要自动执行一段代码,不需要我们手动去触发
    例如:网页中的倒计时
    定时器函数可以开启和关闭定时器

开启定时器

	语法:
		setInterval(函数, 间隔时间)

	作用:
		每隔一段时间调用这个函数(间隔时间单位:毫秒)
    <script>
        // 开启定时器的方式一:
        setInterval(function () {
            document.write('匹配成功 <br>')
        }, 1000)

        // 开启定时器的方式二:
        function add() {
            document.write('任务完成 <br>')
        }

        setInterval(add, 2000)	// 开启
    </script>

关闭定时器

	语法:
		let 变量名 = setInterval(函数, 间隔时间)
		clearInterval(变量名)

	作用:
		当满足某些条件时,关闭定时器
    <script>
        let n = setInterval(function () {
            document.write('匹配成功 <br>')
        }, 1000)

        console.log(n)  // 变量里面存的是独一无二的定时器序号,这个序号是为了避免多个定时器互相干涉
        
        // 关闭定时器
        clearInterval(n)
    </script>

具体案例

<body>
    <textarea name="" id="" cols="30" rows="10">
        《用户注册协议》
        您确认所有服务条款并完成注册程序时
        本协议在您与本网站间成立并发生法律效力
        同时您成为本网站正式用户
    </textarea>
    <br>
    <button class="btn" disabled>我已经阅读用户协议 (5s)</button>

    <script>
        const btn = document.querySelector('.btn')
        let second = 5   // 倒计时秒数
        let n = setInterval(function () {
            second--
            btn.innerHTML = `我已经阅读用户协议 (${second}s)`

            if (second === 0) {
                clearInterval(n)
                btn.innerHTML = `我同意该协议`
                btn.disabled = false
            }
        }, 1000)
    </script>
</body>

延时函数

基本认识

JavaScript 内置的一个用来让代码延迟执行的函数,叫 setTimeout

语法:
	1.设置延时函数
	setTimeout(回调函数, 等待的毫秒数)
	
	2.清除延时函数
	let timer = setTimeout(回调函数, 等待的毫秒数)
	clearTimeout(timer)

具体演示

<body>
    
    <script>
        let timer = setTimeout(function () {
            alert("时间到了")
        }, 2000)
    </script>
</body>
【D3.js in Action 3 精译_013】D3 入门基础之 Node、JavaScript 框架与 Observable 记事本 本篇为《D3.js in Action》全新第三版第 1.2 小节的内容收尾部分,主要介绍了与 D3 项目构建相关的一些知识,包括 Node.js、主流 JavaScript 框架及 Observable 平台相关的情况。可以作为扩充知识面的阅读材料。建议多尝试 Observable 线上项目。 阅读详情

相关推荐

JavaScript游戏开发实践:使用D3.js创建避开障碍物游戏

本文还有配套的精品资源,点击获取 简介:该项目是一个基于JavaScript的学生项目,主要利用D3.js库来创建避开障碍物的游戏。D3.js是一个强大的JavaScript库,用于在浏览器中操作和展示数据。学生在这个项目中通过实践学习交互式图形设计和游戏开发的基础知识,包括基础编程概念、数据结构、事件处理以及用户交互设计等。合作完成的项目还可能涉及团队协作、沟通和版本控制...

weixin_35706255的博客 822

探秘AS3JS:将ActionScript 3.0带入JavaScript的世界

探秘AS3JS:将ActionScript 3.0带入JavaScript的世界 更新通知:由于关注度较低,该项目已不再维护。但其思想和成果仍值得回顾与学习。 在线体验:想在浏览器中直接体验AS3JS吗?试试这个实时示例! 项目简介 AS3JS是一个基于Node.js的工具,它将ActionScript 3.0代码转换为纯JavaScript。灵感来源于ImportJS,它允许你利用AS3的...

gitblog_00099的博客 710

Plottable.js:D3之上构建的交互式图表JavaScript库

Plottable.js 是一个基于 D3.js 的灵活且易于使用的图表库,它提供了高级抽象,使得开发者可以更加简便地创建和定制复杂的数据可视化。相比原生的 D3.js 库,Plottable.js 将重点放在了更简洁的API上,从而降低了创建图表的复杂性,加快了开发速度。在现代的数据可视化中,高效构建图表是关键。Plottable.js提供了一套丰富的预定义组件和布局,以帮助开发者快速实现各种图表设计。下面将深入探讨组件库中的组件类型、功能、样式自定义方法,以及如何应用预定义布局来构建复杂的图表。

weixin_31938351的博客 1128

探索AS3JS:将ActionScript 3.0转换为JavaScript的强大工具

探索AS3JS:将ActionScript 3.0转换为JavaScript的强大工具 项目介绍 AS3JS是一个基于Node.js的工具,旨在将ActionScript 3.0代码转换为纯JavaScript代码。这一工具不仅支持多种IDE的智能代码补全功能,如FlashDevelop和FDT,还允许开发者使用熟悉的AS3包结构编写代码,并自动转换为独立的JavaScript文件。AS3JS的核...

gitblog_00134的博客 822

D3.js数据可视化JavaScript库本地包

D3.js是数据驱动文档(Data-Driven Documents)的缩写,它是一个基于Web标准的JavaScript库,用于使用HTML、SVG和CSS创建复杂的数据可视化图表。D3.js允许开发者通过数据来操纵文档的属性和内容,因此它特别适用于数据可视化领域。由于其灵活性和强大的数据绑定能力,D3.js已经成为数据可视化的首选工具之一。在本章中,我们将首先了解D3.js的定义和它如何将数据转化为引人入胜的视觉表现。

weixin_34511754的博客 1239

低功耗蓝牙技术 > GAP和GATT介绍

GAP和GATT作为蓝牙协议栈中的关键协议,为BLE设备之间的通信提供了标准和框架。GAP主要负责设备的连接、广播和角色定义,而GATT则定义了BLE设备之间的具体通信方式,通过Services和Characteristics实现数据的传输和交换。在蓝牙技术的发展中,GAP和GATT两个协议扮演着关键的角色,为BLE(低功耗蓝牙)设备之间的通信提供了规范和框架。GATT连接是建立在GAP协议之上的,是一种独占连接,一个BLE外设同时只能连接一个中心设备。连接建立后,通信是双向的,不同于GAP的单向通信。

DL_62532的专栏 4030

连接区块链节点的 JavaScript 库 web3.js

通过前面的文章我们可以知道基于区块链开发一个DApp,而DApp结合了智能合约和用户界面(客户端),那客户端是如何与区块链进行连接交互的、如何调用智能合约的、如何发送一个交易到区块链、如何获取区块链上的数据,这就是本文要介绍的 web3.js。如下图,区块链网络中的每个节点都会得到一份区块链上所有数据的副本,它们互相通信,实现对公共账本状态的共识。

二蛋的博客 1万+

从标记基因到功能分析:手把手教你人工注释单细胞亚群的完整流程

本文详细介绍了人工注释单细胞亚群的完整流程,从标记基因筛选到功能分析验证,特别针对肿瘤微环境、发育轨迹等复杂场景提供解决方案。通过差异表达分析、多维数据整合和实验验证,帮助研究者准确识别细胞类型,提升单细胞转录组研究的生物学解读深度。

jenkins8butler的博客 244

【亲测免费】 AS3JS:ActionScript 到 JavaScript 的转换工具

AS3JS:ActionScript 到 JavaScript 的转换工具 AS3JS 是一个开源项目,旨在为开发者提供一种将 ActionScript 3.0 代码转换为 JavaScript 代码的工具。该项目主要使用 Node.js 进行开发。 项目基础介绍 AS3JS 是一个基于 Node.js 的 ActionScript 到 JavaScript 的转译器。它允许开发者以 Action...

gitblog_00861的博客 358

物联网组网技术优缺点对比:蓝牙、LoRa、wifi、NB-IoT、ZigBee等

1.前言 最近对物联网产品自组网技术选型,找到合适的组网技术,让产品自行组网并完成数据的传输。 2.参数对比

谁念西风独自凉 4万+

环境科研人必备:手把手教你用EPISuite 4.1批量预测化合物毒性(附ECOSAR实战)

本文详细介绍了EPISuite 4.1在环境毒理学研究中的应用,重点解析了ECOSAR模块的化合物毒性预测技术。通过批量处理实战和科研案例,帮助环境科研人员快速评估化学物质对水生生态系统的风险,提升工作效率。文章还涵盖了EPISuite核心模块的功能分类及ECOSAR模型的技术原理与算法特点。

weixin_28738165的博客 540

数据可视化 D3.js 与JavaScript对比

使用JavaScript来更改Html // 使用JavaScript var paragraphs = document.getElementsByTagName("p"); for (let i = 0; i < paragraphs.length; i++) { var paragraph = paragraphs.item(i)...

一只菜鸡 1221

xilinx zynq-7000 linux下rs422串口通信测试步骤

这几天使用xilinx的zynq-7000系列调试rs422串口,期间遇到不少问题,好在最终调试完成,在这里记录一下调试步骤。 我用的soc型号是xc7z100,板载了2个rs422外设,PS端有2个uart控制器,uart0用于连接rs232并作为console控制台输出,uart1连接rs422。 rs422和主板连线原理图如下: 其中422_TXD1_3V3 和422_RXD1_3V3 为数据发送和接收引脚,422_TXD_DE1_3V3为发送使能引脚,422_RXD_REn1_...

dongyunke的博客 5907

JavaScript进行数据可视化:D3.js入门

什么是D3.js?D3.js(Data-Driven Documents)是一个基于Web标准(HTML、SVG和CSS)的JavaScript库,它提供了将数据绑定到文档的元素上,并通过这些元素进行数据可视化的能力。D3.js的核心是SVG(可缩放矢量图形),它允许开发者创建高质量的矢量图形。

qq_43556680的博客 2534

Workbench下列车转向架随机振动疲劳分析

结果中添加功率谱响应工具(Response PSD Tool),可以查看几何体以及远程点上的功率谱密度,如下图11所示,这里查看几何体上某一硬点的加速度功率谱密度响应曲线,如下图12所示。结果中添加疲劳工具(Fatigue Tool),查看列车转向架的疲劳寿命情况,这里采用窄带的寿命假设理论,曝光时间为1s指明计算出的疲劳寿命的基本单位是秒,寿命结果如下图14所示,可以看到最大寿命为1e35s,最小寿命为2.3542e18s,注意单位制,可再次基础上将其转换为小时或天。频域上的统计计算,软件很快计算完成。

ansysxuexizhe的博客 2603

YOLOv11 改进 - 注意力机制 | HaloNet 局部自注意力 (Local Self-Attention) 以分块交互策略实现高效全局上下文建模

本文介绍了局部自注意力机制(HaloAttention)在YOLOv11中的结合应用。局部自注意力通过关注输入数据局部区域来捕捉特征关系,能降低计算复杂度、增强局部特征捕捉,且可与CNN结合。其计算时先定义局部窗口,再计算注意力权重并加权求和。我们将HaloAttention集成到YOLOv11的检测头中,并进行相关注册和配置。实验表明,改进后的模型在目标检测和实例分割等任务中表现更佳,证明了自注意力模型在传统卷积主导领域的有效性。

魔改工程师的博客 1141

探秘Behavior3JS:行为树的JavaScript实现

探秘Behavior3JS:行为树的JavaScript实现 在追求智能与自动化日益增长的时代,一个强大且灵活的行为设计框架对于开发者来说无异于一把开启新世界大门的钥匙。今天,我们将一起探索【Behavior3JS】,一款迁移至全新家园的JavaScript库,它将行为树的概念带入Web开发的世界。 1、项目介绍 Behavior3JS是一个成熟而强大的行为树实现框架,现在其核心活动已迁移到了ht...

gitblog_00022的博客 751

RDKit | 基于Murcko骨架聚类化合物库

化合物多样性评估 一种方法是使用合适的指纹技术将化合物矢量化并评估他们之间的距离。这种方法经常被使用,但是对于人类很难直观地理解化合物之间的距离。 基于Murcko骨架,分子大致聚集在化合物骨架中,并且每个簇中的顶部化合物都作为候选化合物。此方法非常符合人类的直觉,因此可以预期人将通过查看候选化合物列表来自动缩小化合物的范围。 Murcko骨架 Mur...

DrugOne 3766

探索MurmurHash3.js:高效散列算法的JavaScript实践

探索MurmurHash3.js:高效散列算法的JavaScript实践 在数据处理和存储的世界里,快速且分布均匀的散列算法是不可或缺的技术基石。今天,我们来深入探讨一款专为JavaScript打造的高性能散列库——MurmurHash3.js,它将经典的MurmurHash3算法以纯JavaScript的形式引入Web平台和Node.js环境。 项目介绍 MurmurHash3.js,顾名思义,...

gitblog_00392的博客 436

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

javascript 三个点_以太坊 JavaScript 库:web3.js 与 ethers.js 比较(第一部分)

Web3.js 和 ethers.js 都是 JavaScript 库,其作用是使开发者可以与以太坊区块链交互。这两个库都很实用,都能满足大多数以太坊开发者的需求。本文将重点围绕 web3.js 和 ethers.js 的相同点和不同点来对它们进行比较,以便你能更好地理解它们的细微区别。本文的目的是帮助开发者理解两个库的优缺点,以便能够决定哪个库适合其具体用例。本文中提供了一些资源,可能...

weixin_36256707的博客 3182

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

billboard.js:基于D3.js的终极JavaScript图表库完整指南

想要在网页中创建专业级的数据可视化图表吗?📊 billboard.js正是你需要的解决方案!作为一款基于D3.js构建的JavaScript图表库,它提供了简单易用的接口,让开发者能够快速创建各种精美的交互式图表。无论你是数据分析师、前端开发者还是产品经理,billboard.js都能帮助你轻松实现数据可视化需求。 ## 🔥 为什么选择billboard.js? **简单易用的API设计*

gitblog_00456的博客 1065

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

js3-mode:一款兼容多种风格的JavaScript编辑模式

js3-mode:一款兼容多种风格的JavaScript编辑模式 在现代Web开发中,JavaScript作为核心技术之一,其开发效率和代码质量的重要性不言而喻。emacs编辑器作为一个历史悠久且功能强大的文本编辑器,拥有许多扩展插件来提高编程效率。今天,我们要介绍一款名为js3-mode的emacs插件,它不仅支持多种JavaScript编码风格,还特别兼容npm风格。 项目介绍 js3-mod...

gitblog_00460的博客 1035

D3.js(Data-Driven Documents):JavaScript可视化库

虽然D3.js是一个基于JavaScript的库,专门用于Web数据可视化,但你可以创建一个Python应用,该应用通过某种方式(如Flask或Django等Web框架)将D3.js集成到前端页面中。以下是一个简单的示例,展示如何使用Flask框架创建一个Python Web应用,并在前端页面中嵌入D3.js进行数据可视化。你可以根据需要扩展这个示例,从Flask后端传递更复杂的数据到前端,并使用D3.js创建更复杂的可视化效果。D3.js的核心理念是利用数据来驱动文档的生成和操作,使数据可视化成为可能。

qiy_icbc的博客 2415

JavaScript 可视化案例 D3.js Chart.js 使用教程 图表实现 柱状图 饼状图 条形图 折现图等

JavaScript可视化图表 引用D3.JS 库 引用 Chart.js 柱状图 饼图 条形图 折现图

weixin_42462436的博客 1236

【亲测免费】 Behavior3JS:行为树编程的JavaScript库

Behavior3JS:行为树编程的JavaScript库 Behavior3JS 是一个开源的 JavaScript 库,用于创建和编辑行为树。行为树是一种用于游戏和机器人编程的图形控制结构,它能够以模块化和可重用的方式组织和执行复杂的决策逻辑。 1. 项目基础介绍和主要编程语言 该项目主要使用 JavaScript 编写,同时包含少量的 Handlebars、CSS 和 HTML。Behavi...

gitblog_00495的博客 590

D3.js简介:用于定制数据可视化的JavaScript库

D3.js是一个开源的JavaScript数据可视化库,提供了高度灵活的数据驱动图形创作能力。自2011年由Mike Bostock创建以来,D3已成为数据可视化领域的基石工具,推动了该领域的创新和发展。它支持创建各种动态、交互式的图表类型,包括动画、分析图表、层次结构等,广泛应用于新闻编辑室、网站和个人作品集。D3拥有活跃的社区和丰富的资源,包括中文文档和示例网站,帮助开发者快速上手。其核心贡献者包括Mike Bostock、Philippe Rivière等,目前由Observable团队维护。

荷塘月色 1219
上一篇: JavaScript-2
下一篇: JavaScript-4
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值