使用childNodes时如何解决返回nodelist中空白文本节点的问题

QT 读写xml pro文件里面添加QT+=xml,操作xml的头文件包含include 或include 。title元素为book元素的子元素,Harry Potter为其文本。如上第一行为xml文档的说明,version和enconding分别代表当前xml文档的版本和编码方式。xml元素:XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。如bookstore元素为根元素、book元素为bookstore的子元素,子元素、文本、属性。 阅读详情

在使用childNodes属性来返回节点的全部子节点的时候,childNodes会将子节点之间的空格看做一个空的文本节点一并返回。
html代码如下:

<div id="content">
     <ul>
         <li><span>HTML</span></li>
         <li><span>JS</span></li>
         <li><span>CSS</span></li>
         <li><span>JS</span></li>
      </ul>
</div>
    <script>
        function myfunction(sectionId) {
        var findUl = document.getElementById(sectionId).getElementsByTagName("ul")[0];
        var findLi = findUl.childNodes;
        console.log(findLi);
        }
        myfunction("content");
    </script>

打印出的结果:可以看到一共返回了9个子元素,其中有5个空的text节点,我们可以使用正则表达式将这些空的文本节点从删除掉(或者将空格从HTML中删除,又或者使用children来获取子节点)
1
删除空白文本节点的方法:

<script>
        function myfunction(sectionId) {
        var findUl = document.getElementById(sectionId).getElementsByTagName("ul")[0];
        var findLi = findUl.childNodes;
        for(i = 0; i < findLi.length; i++) {
            if(findLi[i].nodeName == "#text" && /\s/.test(findLi[i].nodeValue)) {
                findUl.removeChild(findLi[i]);
            }
        }
        console.log(findLi);
    }
      myfunction("content");
    </script>

之后可以看到打印结果只包括所需要的四个list子元素。nodeName和nodeValue的值可以从第一个打印结果中找到,然后用这两个值确定是否为要删除的空白文本节点。
2
这里在说一下removeChild()方法,它从dom中删除一个子节点,并返回所删除的子节点。被移除的这个子节点任然存在与内存当中,只是没有添加到当前文档的dom中,所以这个被移除的子节点还可以被重新添加回来,前提是你需要用一个变量来保存这个被移除的子节点。列如:

var oldNode = findUl.removeChild(findLi[i]);
querySelector实战指南:用CSS选择器精准定位DOM元素 querySelector是浏览器原生提供的DOM查询API,基于CSS选择器语法实现高效、声明式的元素定位。其核心原理是复用浏览器CSS引擎的规则匹配能力,相比传统getElementById等方法,具备更强的表达力、更好的性能表现和与样式系统天然一致的维护性。它支持伪类、属性选择器及复杂组合,广泛应用于动态渲染处理、状态判断、组件封装和跨框架集成等工程场景。本文聚焦真实项目中高频踩坑点,如作用域陷阱、NodeList类型混淆、伪类兼容性及性能边界,帮助开发者从‘能用’迈向‘精通’。 阅读详情

相关推荐

从S参数到SPICE模型:Cadence Sigrity Boardband SPICE完整使用指南

本文详细介绍了Cadence Sigrity Boardband SPICE工具的核心价值与完整使用流程。该工具通过矢量拟合算法,将复杂的多端口S参数文件转化为无源、紧凑且高精度的SPICE等效电路模型,从而极大提升时域仿真效率。指南涵盖了从数据导入、关键参数配置、模型精度验证到集成应用于PowerSI等系统级仿真的全步骤,是信号与电源完整性分析的必备利器。

defi6farmer的博客 432

JS中的元素节点

会将空格及空行也当成子节点【当成文本】,所以会造成一些麻烦,解决方案是使用。表示当前节点的所有子节点,就是返回所有子节点。属性会获取包括文本节点在呢的所有节点。选择器使用一样,这两个方法非常重要。这个属性不会获取到空文本节点的。

weixin_47267628的博客 942

力扣(Leetcode)第1题:两数之和(C语言版本)

题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = 6

qq_39855356的博客 3306

javascript获取childNodes详情,删除空节点

chidNodes返回的是node的集合, 每个node都包含有nodeType属性。 nodeType取值: 元素节点:1 属性节点:2 文本节点:3 注释节点:8 页面上是由无数个节点组成,节点分成元素节点、属性节点、文本节点、注释节点 <table> <tr> <td>aaa</td&...

weixin_34380948的博客 274

EFR32BG22 Thunderboard开发板 使用SPI 读取加速度计

Simplicity Studio v5 创建Silicon Labs蓝牙SoC EFR32BG22 Thunderboard模块的加速度计工程,模块上有一个ICM-20648 6轴运动跟踪设备,集成3轴加速度计和3轴陀螺仪功能,使用SPI接口跟EFR32BG22芯片连接。 我尽量以图片的形式展示(少打字): 将EFR32BG22的Thunderboard模块通过USB线插入到电脑,打开Simplicity Studio v5软件。 下面看重点: 点击搜索到的IO Stream: USART,点击Ins

qq_25727979的博客 1494

人形机器人五大核心零部件技术解析与国产化实况

人形机器人并非简单机械集成,而是物理、能量、感知、决策与执行五层系统毫秒级协同的复杂体。其性能瓶颈往往不在于整机算法,而深植于谐波减速器的刚度稳定性、无框力矩电机的功率密度与温升控制、六维力传感器的动态响应与温漂抑制、运动控制器的实时OS生态及灵巧手的多指协同精度等底层硬件能力。这些部件共同构成整机68.3%的成本,且国产化率差异显著——谐波减速器达72%,而高精度力矩传感器仍受制于日德厂商。本文聚焦‘谐波减速器’和‘六维力传感器’两大热词,从材料工艺、参数定义、失效模式到产线验证,揭示真正卡脖子的技术关卡

weixin_29065959的博客 406

childNodes详解

定义和用法 childNodes 属性返回节点的子节点集合,以 NodeList 对象。 提示:您可以使用 length 属性来确定子节点的数量,然后您就能够遍历所有的子节点并提取您需要的信息。 浏览器支持 所有主流浏览器都支持 childNodes 属性。 语法 element.childNodes 技术细节 返回值: NodeList 对象,...

diukuijian4440的博客 1910

ovs实现lb负载均衡

负载均衡器的实现原理是通过硬件或软件设备将客户端访问流量根据转发策略分发到多个服务器或设备上,以确保系统的负载均衡。二层负载均衡‌:使用虚拟MAC地址方式,根据OSI模型的二层进行负载均衡。‌四层负载均衡‌:基于IP+端口的负载均衡,主要分析IP层及TCP/UDP层,实现四层负载均衡。‌七层负载均衡‌:从应用层开始,根据虚拟的URL或IP、主机名接收请求,再转向相应的处理服务器。

bobi的博客 951

node 获取表单数据 为空_Node 程序 debug 小记

有时候,所见并不是所得,有些包,你需要去翻他的源码才知道为什么会这样。背景今天调试一个程序,用到了一个很久之前的NPM包,名为formstream(https://www.npmjs.com/package/formstream),用来将 form表单数据转换为流的形式进行接口调用时的数据传递。这是一个几年前的项目,所以使用的是 Generator+ co实现的异步流程。其中有这样一个功...

weixin_39897749的博客 329

Vector CANoe VT2516A实战:从硬件连接到CAPL脚本的完整配置指南

本文详细介绍了Vector CANoe VT2516A板卡从硬件连接到CAPL脚本编写的完整配置指南。涵盖硬件接线原则、VT System配置避坑技巧、系统变量创建规范、可视化Panel设计、CAPL脚本调试及典型故障排查案例,帮助工程师快速掌握VT2516A板卡的应用实践,提升汽车电子测试效率。

weixin_30608503的博客 254

coredump文件的原理是啥

Core Dump(核心转储)是操作系统在程序崩溃(如段错误、非法指令等)时自动生成的一个文件,它包含了程序崩溃瞬间的。通过 core dump,开发者可以像“时间回溯”一样检查程序崩溃瞬间的状态,是调试复杂问题的利器!终止时,Linux 内核会生成 core 文件。不会生成 core dump,因为它们是“优雅终止”信号。这样 core 文件会直接压缩存储,节省磁盘空间。的文件(类似可执行文件),可以用。Core 文件本质上是一个。

二进制君 381

php childnodes,XML DOM

XML DOM childNodes 属性 Element 对象定义和用法childNodes 属性返回包含被选节点的子节点的 NodeList。如果选定的节点没有子节点,则该属性返回不包含节点的 NodeList。语法elementNode.childNodes提示和注释提示:如需循环遍历 childNodes 列表,使用 nextSibling 属性要比使用父对象的 childNodes 列表...

weixin_33514277的博客 172

智驾芯片新天团!NVIDIA Thor vs 高通8797 vs 蔚来神玑NX9031,2025-2026谁能称王?

应用场景推荐芯片理由高阶NOA + L4 Robotaxi千TOPS以上,满足BEV+TransformerL2+/L3级别NOAThor-U / 高通8797算力适中,功耗控制佳,生态成熟经济型城市NOAThor-Z / S性价比均衡,适合前装普及自研平台一体化NX9031华为之外最强自研整合方案📌 TOPS不再是天花板,GPU、带宽、功耗、上市时间和车企绑定都是决胜关键📌 Thor系列仍然统治高端,但国产神经元开始觉醒📌 智驾芯片的选择,从“强”走向“适合场景”

weixin_43199439的博客 2642

childNodes 详解

在JavaScript中,childNodes是一个属性,属于Node对象,它返回一个NodeList对象,其中包含了指定Node对象下所有类型的子节点。这些子节点可以是元素节点(Element)、文本节点(Text)、注释节点(Comment)等。

思索的涟漪,突破自我 1080

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何用 childNodes 与 children 区分文本节点与元素子节点

p>Hello</p></div>这个 div 的 childNodes 实际包含 3 个节点:一个换行+空格组成的文本节点、一个 <p> 元素节点、再一个换行文本节点。有道翻译AI助手 有道翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译、网页翻译、文档翻译、PDF翻。

xz_ike的博客 60

深度学习工具包 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")

querySelectorAll与childNodes

NodeList 对象是一个节点的集合,是由 Node.childNodes 和 document.querySelectorAll 返回的. html代码: <ul id="parent"> <li>1</li> <li>2</li> <li>3</...

weixin_30367873的博客 203

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

DOM树详解:从HTML解析到节点操作的完整认知地图

DOM(文档对象模型)是浏览器将HTML源码转化为可编程内存结构的核心机制,其本质是一棵动态、实时、由多种节点类型构成的树形数据结构。理解DOM树的构建过程——从词法分析、语法解析到文本节点注入与渲染树合成——是掌握前端交互逻辑的基础。DOM节点并非静态标签,而是具备nodeType、nodeName、childNodes等12个关键属性的JavaScript对象,其中ELEMENT_NODE和TEXT_NODE最常被操作。正确区分innerHTML、createElement和DocumentFragme

cuxiong8996的博客 651

DOM 基础概念与节点体系

DOM 以树形结构组织所有节点,节点间存在明确的层级与亲属关系,所有页面操作都建立在节点获取、遍历与关系判断的基础之上。

2401_83227843的博客 313

JavaScript 中 DOM 操作获取子节点集合的两种属性

【代码】JavaScript 中 DOM 操作获取子节点集合的两种属性。

C20001206的博客 210

DOM遍历本质:理解网页结构与节点关系的系统性操作

DOM(文档对象模型)是浏览器将HTML解析为内存中树状对象结构的核心机制,其遍历并非简单查找节点,而是基于父子、兄弟等层级关系的系统性导航与操作。掌握DOM遍历原理,意味着理解节点类型差异(如children与childNodes)、遍历时机(DOMContentLoaded vs load)、以及三种底层范式——深度优先(DFS)、广度优先(BFS)和事件冒泡——它们直接映射浏览器渲染与事件系统的原生行为。这一能力支撑着前端交互开发、无障碍焦点管理、CSS性能分析、服务端HTML解析(JSDOM)及跨框

weixin_30873847的博客 404

JavaScript中DOM树与数据结构树的深度解析

树(Tree)是计算机科学中最基础的非线性数据结构之一,其核心在于节点(Node)间的父子、兄弟等层级关系。在前端开发中,这种抽象模型具象化为浏览器中的DOM树,每个HTML元素都是一个node,具备parentNode、childNodes、nextSibling等原生属性。理解nodeType类型区分(如ELEMENT_NODE与TEXT_NODE)、children与childNodes的本质差异,是避免遍历错乱、事件失效、性能卡顿的关键。结合JSON格式的逻辑树与DOM树的双向映射,开发者可构建可拖

weixin_30781107的博客 407

DOM_节点层次

一、DOM1级定义了一个Node接口,这个接口是由DOM中的所有节点类型实现的。Node接口共有12种节点类型,常见的是元素节点、文本节点和文档节点。 Node.ELEMENT_NODE(1);——元素节点 Node.Text_NODE(3);——文本节点 Node.DOCUMENT_NODE(9);——文档节点 二、IE浏览器没有Node类型的构造函数,保证兼容,可以做以下比较...

weixin_30515513的博客 83

DOM备忘录

nodeName和nodeValue属性 对于element节点而言,nodeName是标签名,nodeValue是null;而对于textNode节点而言,nodeName是#Text,nodeVlue是内部字符串。譬如: node关系: 父子关系:firstChild, lastChild, parentNode 兄弟关系:nextSibli...

aihuo4431的博客 138

你不知道的javascript之node类型详解

前段时间有做过一个关于节点操作的排序问题, http://blog.youkuaiyun.com/blueblueskyhua/article/details/68929578 今天就node类型,进行详细的讲解。首先看下他的兼容性。 node共有12类型。 类型详情可以参考http://www.w3school.com.cn/jsref/prop_node_nodetype.asp 1.no

程序员秋风的博客 1399

DAY22-DOM

DOM

qq_42775808的博客 94
上一篇: vscode里添加注释的快捷键
下一篇: setInterval实现渐变效果
RebootTang
博客等级 码龄10年 2粉丝 17原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值