DOM入门

【React 框架】简介 / 入门案例 / 虚拟DOM / 真实DOM (1)原生 JavaScript 操作 DOM 繁琐、效率低( DOM-API 操作 UI )。 (2)使用 JavaScript 直接操作 DOM,浏览器会进行大量的重绘重排。 (3)原生 JavaScript 没有组件化( html / css / js )编码方案,代码复用率低。 (1)采用组件化模式、声明式编码,提高开发效率及组件复... 阅读详情

div就是元素节点(任意的标签都是元素节点)
id就是属性节点 (任意的属性都是属性节点)
你好就是文本节点 (任意的文本都是文本节点)

1.DOM  全称document object model 文档对象模型 操作html
         html文档由html+css组成 DOM利用js操作html+css的
         操作元素节点 element  Element 元素节点对象
         查 获取元素节点的方式

        一. 通过选择器获取 
       1. id选择器 通过id属性来获取元素 里面的参数为string类型的id 返回值是一个htmlElement
     

  var box = document.getElementById("box") //获取id值为box的元素
        console.log(box);


        2. class选择器 通过class属性名来获取对应的元素 他传入的参数为string类型的class名字 
        返回值是一个htmlCollectoinof<Element> 返回的是一个集合 这个集合里面存储了Element
           htmlCollection是类似数组的一种结构 具备下标同时具备length属性 可能会有多个数据
        但是htmlCollection并不是一个数组 他不具备数组的方法 只是存在对应的下标和length属性
       

 var content = document.getElementsByClassName("content")
        console.log(content);


        所以我们可以通过下标来获取对应的htmlCollection里面的元素
        console.log(content[0]);
        3.标签选择器 里面传入的是一个标签名字的string字符串 返回的也是一个htmlCollection
     

   var div = document.getElementsByTagName('div')
        console.log(div);//这里是一个htmlCollection


        通过下标来进行获取里面的元素
        console.log(div[0]);
         通过name值来获取 返回的类型是一个nodeList nodeList不是htmlCollection
        但是他同样具备对应的下标和length属性 他的方法比htmlCollection要多
        4.nodeList和htmlCollection的区别
        var divName = document.getElementsByName('divName')
        console.log(divName);
        console.log(divName[0]);
       5.复合选择器 里面的参数为string类型的选择器  返回第一个匹配选择器的元素 返回的是一个element
       

 var selectDiv = document.querySelector("div")
        console.log(selectDiv);


        返回所有匹配选择器的元素 接收的是一个nodeList
       

 var selectAll = document.querySelectorAll('.content')
        console.log(selectAll);
        console.log(selectAll[0]);


         操作属性节点 attribute Attr属性节点对象 设置属性节点
        element内置的属性 element.属性名
       

 var box = document.getElementById("box") //获取id值为box的元素

         className
        console.log(box.className);//返回class名字 同样我们可以进行赋值 set元素属性
        box.className='jack' //设置class属性名
       // id
        console.log(box.id); //获取id名字
        box.id = 'rose'
       // title
        console.log(box.title); //获取title名字 没有为空
        box.title = '刘德华'
       // style 样式操作 element.style.样式名
        box.style.background = 'red' //给背景颜色赋值为红色
        console.log(box.style.background); //获取背景颜色
         //操作文本节点 text   Text文本节点对象 设置文本节点
        innerText 获取显示的文本 赋值就是设置对应的文本
        console.log(box.innerText); //获取里面显示的文本(忽略标签)
         box.innerText = '睡了没' //覆盖之前里面的的所有内容
         box.innerText = '<b>吃了没</b>'  //设置文本 是不会解析里面的标签的
        innerHTML 获取显示的html内容 赋值就是设置对应的html内容
        console.log(box.innerHTML); //会将里面所有的html代码全部获取
        box.innerHTML = '<b>吃了没</b>' //他会解析里面的b标签 显示为html加粗效果

DOM补充

// document.getElementById() //通过id获取 返回的是元素
 // document.getElementsByClassName() //通过class获取 返回的是htmlCollection
 // document.getElementsByTagName() //通过标签名获取 返回的是htmlCollection
// document.getElementsByName() //通过name属性获取 返回的是NodeList
// document.querySelector() //通过选择器获取第一个 返回的是元素
// document.querySelectorAll() //通过选择器获取所有的 返回的是NodeList
// 元素共有属性 赋值就是设置 不赋值就是获取
 //className title id innerText innerHTML style
 //tagName 获取标签名 document表示整个文档
        var content = document.getElementById('content')
        console.log(content.tagName); //tagName是一个只读属性 不能进行设置
        //document表示整个文档 使用document.获取方法 是在全文中进行获取
        //缩小区域进行获取
        var btns = document.getElementsByTagName('button') //里面会包含按钮4
        console.log(btns);
        //缩小区域进行获取
        // 首先获取content这个div 然后再在这个div里面进行获取button
        var innerBtns = document.getElementById('content').getElementsByTagName('button')
        // var content = document.getElementById('content')
        // var innerBtns = content.getElementsByTagName('button')
        console.log(innerBtns);

JQuery入门_语法、函数、对象、DOM、事件 JavaEE-JS的优美封装-JQuery详细学习笔记 文章目录JavaEE-JS的优美封装-JQuery详细学习笔记概述JQuery使用导包引用主函数Jquery对象DOM转jQueryJQuery转DOMJQuery选择器基本选择器层次选择器过滤选择器全代码示例属性过滤选择器子元素过滤选择器DOM处理Append外部插入结点创建结点删除结点clone属性操作HTML,文本和值结点遍历事件AJa... 阅读详情

相关推荐

Oracle监听配置

Oracle监听配置## 标题 选择“监听程序配置”,然后下一步。 选择重新配置,然后下一步/。 不用管,按下一步。 下一步。 选择“否”,下一步。 选择"本地net服务名配置",然后下一步。 选择“重新配置”,然后下一步。 服务名 是"Oracle",然后下一步。 主机为你的IP地址,在doc系统下通过"ipconfig"获取IP地址。然后输入,然后下一步。 选择“是,进行测试...

m0_46079215的博客 807

DOM 初学者指南

DOM(Document Object Model——文档对象模型),可以简单理解为浏览器创建的节点树,每个节点有自己的属性和方法,可以通过 JavaScript 来操作这些属性、调用这些方法。操作 DOM 的能力是 JavaScript 最独特和有用的特性之一。下图是 DOM 树的视觉表示。document 对象是 DOM 的核心/基础,执行任何形式的 DOM 操作都要访问 document 对象。根元素html是 document 对象的子节点。下一行是body和head。

2201_75715995的博客 4288

vins-fusion环境配置、安装与测试

本文主要介绍如何搭建vins-fusion的运行环境,以及解决vins-fusion编译运行时遇到的环境冲突问题,并在此基础上实现例程的运行。

qq_52068373的博客 1万+

DOM(文档对象模型)学习

DOM学习

weixin_63494309的博客 1987

用Python+NumPy手把手实现分数阶傅里叶变换(FRFT),搞定线性调频信号分析

本文详细介绍了如何使用Python和NumPy实现分数阶傅里叶变换(FRFT),特别针对线性调频信号(Chirp信号)分析。通过从零开始的代码实现和可视化案例,展示了FRFT在时变信号处理中的强大能力,帮助工程师和研究人员高效分析频率随时间变化的信号。

weixin_29062823的博客 218

Matlab2024a安装教程

点击【下一步】。8.选择解压后的【MATLAB R2024a(64bit)】文件夹中【Crack】文件夹下的【licese.lic】,点击【打开】。

qq_64359046的博客 4835

原生JS DOM操作方法汇总

创建节点 1. document.createElement(tagname) 创建一个由tagName决定的HTML元素 2. document.createTextNode(data) 创建一个文本节点,文本内容为data 3. document.createDocumentFragment() 创建一个空白的文档片段。文档片段是 DocumentFragment 对象的引用。是DOM节点,但...

weixin_34405557的博客 927

某讯天御滑块验证码逆向实战:从参数解析到环境对抗

本文详细解析了某讯天御滑块验证码的逆向工程实战技巧,从关键参数解析到浏览器环境模拟对抗。重点介绍了collect、eks等参数的逆向思路,以及如何通过puppeteer等工具补全环境检测,帮助开发者有效突破验证码防护。文章还提供了常见错误解决方案和性能优化建议,是验证码逆向领域的实用指南。

weixin_29325007的博客 440

DOM详解

文章目录一、什么是DOM1. 什么是DOM2. 为什么学习DOM3. 何时会用到DOM4. DOM标准5. DOM能做的5件事二、DOM树1. 什么是DOM树2. 何时会生成DOM树三、查找1. 不需要查找就可直接获得的4种节点对象:2. 按节点间关系查找3. 示例: 输出指定元素,并用节点间关系查找想要的元素4. 按HTML特征查找: 4个函数5.查找指定的元素,并修改元素的样式总结 一、什么是DOM 1. 什么是DOM 一套专门操作网页内容的对象和方法的集合。 2. 为什么学习DOM ECM

m0_48224507的博客 1万+

深入解析安卓/Linux固件:从DTB到DTS的反编译实战

本文详细介绍了如何从安卓/Linux设备固件中提取并反编译DTB文件,将其转换为可读的DTS源码。通过实战步骤,包括拆解boot.img、处理resource.img以及使用dtc工具,帮助开发者深入理解设备硬件配置,为固件定制、驱动调试和系统移植提供关键支持。

weixin_29274337的博客 341

手把手教你玩转服务器芯片架构--​​7.1 项目1:基于FPGA的RISC-V软核设计(Verilog实现核心指令执行单元)​

本文介绍了基于FPGA的RISC-V软核设计实践项目。项目采用Verilog实现RV32I指令集核心处理器,包含指令解码、ALU、寄存器堆等关键模块设计,并通过功能仿真验证。在Xilinx Artix-7 FPGA上完成综合与部署,资源利用率控制在5%以内。最后探讨了五级流水线优化、指令集扩展等进阶方案。该实践完整覆盖了从指令集设计、RTL实现到FPGA部署的全流程,可作为学习处理器架构与FPGA开发的典型案例。

MHD0815的博客 175

DOM 初步

一、DOM操作 1. 创建 (1)documoent.write (2)innerHTML (3)createElement 2. 增 (1)appendChild() (2)insertBefore() 3. 删 (1)removeChild() 4. 改 (1)普通元素属性:src、href、title… (2)普通元素内容:innerHTML、innerText (3)表单样式:value、type、disabled (4)元素样式:style、className 5. 查 (1)getElement

m0_56212431的博客 5007

Python二级考试题目及答案解析(含刷题软件)

答案:A 解析:print()函数可以在屏幕上输出指定的字符串或变量,input()函数用于从键盘获取用户输入,int()函数可以将指定的字符串或浮点数转换为整数,float()函数可以将指定的字符串或整数转换为浮点数。答案:A 解析:int()函数可以将字符串转换为整数,float()函数可以将字符串转换为浮点数,str()函数可以将任意类型的变量转换为字符串,bool()函数可以将任意类型的变量转换为布尔值。

YOLO 1万+

XML DOM 入门指南

XML DOM 入门指南 Brian RandellDevelopMentor 1999 年 10 月 出处:Microsoft摘要:本文讨论当 XML 文档被 Microsoft(R) XML Parser 显露之后,如何通过执行 XML DOM 来访问和操作 XML 文档。(共 10 页)目录前言DOM 的确切定义是什么? 如何使用 XML Dom?如何加载文档?处理故障在 XML 文档中检索

laoniu的专栏 1119

visio安装包

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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【前端】对前端小白极为友好的JS DOM入门文章

这是一篇对前端小白极为友好的JS DOM入门文章,能让你快速理解JS的文档对象模型,快来一起学习吧

A_D_H_E_R_E的博客 3816

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

HTML DOM入门基础篇

HTML DOM入门基础篇一. HTML DOM简介二. 常用概念1. 节点概念2. HTML DOM 方法 一. HTML DOM简介 DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口。 HTML DOM 定义了访问和操作 HTML 文档的标准方法。 DOM 以树结构表达 HTML 文档。 HTML DOM 是关于如何获取、修改...

TingtingYang 439

【小白入门前端】DOM、DOM树和DOM对象

本文介绍了DOM(文档对象模型)的核心概念与作用。DOM作为HTML/XML文档的编程接口,将网页转换为树形结构(DOM树),使JavaScript能够动态访问和修改页面内容、结构及样式。DOM树以层级关系组织网页元素,DOM对象则提供操作这些元素的属性和方法。通过DOM,开发者可以高效定位节点、实时更新网页,实现交互功能。简言之,DOM是连接网页与JavaScript的桥梁,通过树形结构和对象化操作实现动态网页控制。

Mimany的博客 1305

DOM入门知识

DOM(文档对象模型)就像网页的"骨架",浏览器把HTML变成一棵树,JavaScript可以通过这棵树来修改网页内容。querySelectorAll返回所有匹配元素的静态NodeList(非实时更新)68。:DOM操作就像用遥控器操作电视,要先找到按钮(获取元素),再按下按钮(执行操作)!querySelector返回第一个匹配元素,未找到则返回null。:不会和标准属性冲突,适合存储临时数据。HTML标签的属性(如。

2401_87882101的博客 232

DOM入门书籍-JavaScript DOM编程艺术

刚刚读完了《JavaScript DOM编程艺术》一书,该书由人民邮电出版社出版,原作者Jeremy Keith(英),由杨涛、王建桥、杨晓云等人翻译,该书讲述了JavaScript DOM编程的入门知识,内容不是很多,短短300页,涵盖了常用的DOM方法和基本的DOM编程技巧和编程原则,始终秉承着预留退路(书中翻译的术语,感 觉很朴实,却又有点不够专业,反正意思倒是一目了然)的设计原则,反复重...

寒雪谷 834

js dom操作入门

JavaScript DOM操作是前端开发中非常重要的一部分,掌握这些基本操作可以帮助你动态地更新网页内容、样式和结构,实现丰富的交互效果。通过不断实践,你可以更加熟练地使用这些方法来构建复杂的Web应用。

鸭梨的博客 977

Dom入门

Dom入门 DOM= Document Object Model,文档对象模型 DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。有一点很重要,DOM的设计是以对象管理组织(OMG)的规约为基础的,因此可以用于任何编程语言. •    D:文档 – html 文档 或 xml 文档 •    O:对象 – do

866

DOM的简单入门

这一篇是关于DOM的简单入门,后续会发BOM和DOM的详细笔记 *通过document.getElementById获取id从而获取元素对象 <!DOCTYPE html> <html lang> <head> <meta charset="UTF-8"> </head> <body> <img id="light" src="img/off.gif"> <script> //通

m0_60528766的博客 2790

【JAVA】Web之DOM、BOM、BootStrap简单入门

pass

张林克的博客 598

前端入门——DOM对象

qq_44213733的博客 133
上一篇: location和histroy和navigator的讲解
下一篇: 补发js第一次内容
快乐的光头佬
博客等级 码龄5年 3粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值