【经验积累】JS,HTML DOM 在dom操作获取节点时,要注意文本节点的问题

2024年原生JS面向对象 Tab栏切换案例,阿里后端面试题 除了简历做到位,面试题也必不可少,整理了些题目,前面有117道汇总的面试到的题目,后面包括了HTML、CSS、JS、ES6、vue、微信小程序、项目类问题、笔试编程类题等专题。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】点击x号,可以删除当前的tab项和内容项双击tab项文字或者内容项文字,可以修改里面的文字内容.3.抽象对象抽象对象:Tab对象该对象具有切换功能该对象具有添加功能该对象具有删除功能该对象具有修改功能4.切换功能实现。 阅读详情

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <script type="text/javascript">
  function getValue(obj){
  var tdElement=obj.parentNode;
  var trElement=tdElement.parentNode;
  var tableElement=trElement.parentNode;
  alert(trElement.lastChild.id);
 }
</script >

 </head>

 <body>
 <table>
  <tr id="aa">
   <td>你好</td>
   <td>哈哈</td>
   <td>傻的</td>
   <td id="bb"><input type="button" value="取得本TD里面的ID" onclick="getValue(this)" /></td>
  </tr>
 </table>

 </body>
</html>

如上代码,执行时弹出undefined,,只是因为trElement.lastChild事实上并不能获得<td id="bb"><input type="button" value="取得本TD里面的ID" onclick="getValue(this)" /></td>

这里存在一个文本节点的概念,即是如果<td/><tr>和分开不在同一行的,那么他们之间事实上还有文本节点,这里trElement.lastChild取得的就是那个文本节点,而不是td节点,所以要把程序

<td id="bb"><input type="button" value="取得本TD里面的ID" onclick="getValue(this)" /></td>
  </tr>

改成

<td id="bb"><input type="button" value="取得本TD里面的ID" onclick="getValue(this)" /></td></tr>

或者把

alert(trElement.lastChild.id);

改成


alert(trElement.lastChild.previousSibling.id);         //取得那个文本节点后再取前一个兄弟节点

 

就能正常执行了,这里是弹出 bb。

原生JavaScript拖拽实现:从事件原理到可访问DOM操作 拖拽交互是前端开发中的基础但易错功能,其本质是浏览器原生Drag & Drop API驱动的三阶段事件流(dragstart→dragover→drop)。理解event.dataTransfer的数据传递机制、preventDefault()在dragover中的强制必要性,以及aria-grabbed等可访问性属性的动态管理,是构建健壮拖拽逻辑的核心。该技术无需框架依赖,具备极致轻量(<4KB)、调试透明、样式自由和兼容清晰等工程优势,广泛适用于后台管理系统排序、低代码平台组件编排、仪表盘布局调整等场景 阅读详情

相关推荐

tcl脚本语言之file的常见用法

这些命令覆盖了从文件属性获取、修改、复制、删除、路径处理等广泛的文件操作需求。命令用于处理文件系统操作。

hzmscut的博客 5149

html获取控件td里的内容,简单的HTML DOM获得TD的内容,其中的具体内容为

Clubname1530Clubname 21530Clubname 31530我要的是找出TR其中Clubname 2是从TD获取数据[ 1]和td [2]并输出。我想这跟simple_html_dom.php做我已经被require('simple_html_dom.php');$html = file_get_html('webpage.html');foreach($html->fi...

weixin_26801149的博客 1087

基于ADS的低噪声放大电路设计

1. 低噪声放大器设计理论基础 1.1 低噪声放大器在通信系统中的作用 低噪声放大器的主要作用是放大天线从空中接收到的微弱信号,减小噪声干扰,以供系统解调出所需的信息数据。当今,人们对于各种无线通信工具的要求越来越高,如功率辐射要小、作用距离要远、覆盖范围要广等,这就对系统的接收灵敏度提出了更高的要求,系统接收灵敏度的计算公式为: Smin⁡=−144(dBmHz)+NF+10lg⁡BW(MHz)+SN(dB) {S_{\min }} = - 144\left( {\frac{{{\rm{dBm}}}}{

ASH_GUARDIAN的博客 4万+

原生js取dom节点可能存在的问题

在用原生的js的dom指针获取dom节点时,可能出现获取不到的情况,如下面这段html first second     如果我们用document.getElementById("list").firstChild会得到什么,是first吗?实际上你会发现它并不是。用document.getElementById("list").firstChild.nodeType可以

wind__snow的专栏 1394

NIST随机性测试实战:从理论公式到结果解读

本文详细解析了NIST随机性测试的实战应用,从基础测试到高级测试,涵盖频数测试、块频数测试、游程测试等核心方法。通过实际案例和参数设置经验,帮助读者理解如何解读测试结果并排查常见问题,提升随机数生成质量。文章还分享了自动化测试流程和硬件RNG特殊处理技巧,适合密码学和区块链开发者参考。

weixin_29323365的博客 314

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 285

JS对DOM的优化小结

所有的HTML解析成DOM节点才能操作 1. 什么是dom? 2.优化DOM 优化DOM的本质其实就是减少DOM树的重绘与重流。  什么是重流||重绘? 通常页面在加载你的js,css,img等文件时,引擎会对文件加以解析,最终生成两棵树,渲染树和DOM树。DOM树中的需要显示节点在渲染数中都会存在(即display:none的不存

moremore的博客 494

CSP-J/S复赛文件组织与freopen读写全攻略,避免爆零

在信息学竞赛的上机考试中,代码能力固然重要,但文件组织与输入输出重定向往往是决定成败的关键细节。许多选手习惯在线评测环境,对本地文件命名、目录层级和读写方式缺乏系统认知,导致算法正确却因文件名拼写错误或freopen使用不当而遗憾失分。理解评测系统的工作原理,掌握从建立准考证号目录到规范命名源文件,再到使用freopen进行文件流重定向的标准流程,是每位参赛者的必备技能。这种工程化习惯不仅适用于CSP-J/S复赛,也是未来参加NOI等更高水平竞赛的基础。本文从文件组织的底层逻辑出发,结合实战案例,系统讲解考

weixin_32466193的博客 592

Web前端 知识点总结(HTML、CSS、JS)

Web前端 知识点总结(HTML、CSS、JS)

qq_43655412的博客 2738

番外篇:ADS功放设计实战——负载与源牵引的协同优化

本文深入探讨了ADS功放设计中负载牵引与源牵引的协同优化原理及实战技巧。通过2.4GHz Wi-Fi功放等案例,详细解析了基波阻抗迭代优化、谐波调谐高级技巧及收敛判断方法,帮助工程师显著提升功放效率至78%以上。文章特别强调ADS仿真工具的正确使用方法和实际调试经验,为射频功放设计提供实用指导。

weixin_33483304的博客 341

VMware Workstation Pro必备技巧:5分钟搞定Ubuntu虚拟机磁盘瘦身(附常见错误解决)

本文详细介绍了如何为VMware Workstation Pro中的Ubuntu虚拟机进行磁盘瘦身,解决.vmdk文件只增不减的问题。通过清理系统垃圾、使用零填充空闲空间,并利用vmware-toolbox-cmd或vmware-vdiskmanager工具进行压缩,可有效回收被无效占用的磁盘空间。文章还提供了常见错误解决方案和预防性维护建议,帮助用户高效管理虚拟机存储。

sea99的博客 296

JS第二天

JS核心第二天 一.节点操作 1.如何获取节点 获取元素通常使用两种方式: 1.利用DOM提供的方法获取元素 ●document.getElementByld( ●document.getElementsByTagName ●document.querySelector等 缺点: 逻辑性不强、繁琐 2.利用节点层级关系获取元素 ●利用父子兄节点关系获取元素 ●逻辑性强,但是兼容性稍差 2.什么是节点 网页中的所有内容都是节点(标签、属性、文本、注释等) , 在DOM中,节点使用node来表示。 HTML

I_love_bc的博客 345

【YOLOv13[基础]】热力图可视化实践 | 脚本升级 | 优化可视化效果 | 论文必备 | GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM等

本文将进行添加YOLOv13版本的升级版热力图可视化功能的实践,支持图像热力图可视化、优化可视化效果、 可以选择使用GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM, HiResCAM, LayerCAM, RandomCAM, EigenGradCAM。一个参数即可设置是否显示检测框等。

静谧、淡雅 644

javascript学习积累

在学习w3school的javascript,一些自己不是很理解的地方记录下来 1.document.write(); 按我的理解,document应该为HTML Dom中的一个对象,可以调用一些方法,而write为该方法w3c说您只能在 HTML 输出中使用 document.write,如果页面加载完毕再执行write方法的话会覆盖原页面 再者js的代码可以再body里写,嵌入式的写法

invLong的专栏 1169

老版QQ原生表情gif动态

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

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

[js] 积累

之前有类似的文章,为了过渡到markdown编辑器,不再往里加了,新起一篇 DOMContentLoaded The DOMContentLoaded event is fired when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, ...

aefg95955的博客 130

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

HTML+CSS+JS实现【别踩鸡块】,含(源码+思路)

别踩鸡块🐓🐤🐔基尼太美 别踩白块这个游戏相信很多人在网页手机都玩过吧,那时候的我们没有它没有什么特别之处,大多数只是能**证明自己单身20年的手速**,但今天的它更新换名又换面,是我们一个个ikun**粉**(这个粉字怎么有点黑)的共同努力,是对鸡哥(啊不对,是对蔡徐坤努力成果的纪念之作)——别踩鸡块........................

鱼干的博客 6876

浏览器查看HTML源码的三层真相:原始HTML、DOM与渲染树

HTML源码是Web开发与诊断的基础概念,其本质是HTTP响应体中的原始HTML字符串,遵循HTML标准协议解析生成DOM树,并进一步结合CSSOM构建渲染树。理解这三层结构差异,是准确调试页面行为、保障SEO效果、识别安全风险的关键技术前提。Chrome和Firefox等主流浏览器在源码呈现上存在解析容错性差异,而开发者工具Elements面板展示的是JS动态修改后的实时DOM,与右键‘查看网页源代码’所见的静态初始HTML截然不同。掌握这些原理,才能在前端调试、内容运营、搜索引擎优化及安全审计等多元场景

weixin_33739523的博客 719

js知识点积累

js知识点积累 1、js如何在jsp中,通过点击事件创建多个表单? 这里主要通过dom对象,用innerHTML或appendChild来创建多个表单。但是要注意的是element.innerHTML会将element原来的代码覆盖,而appendchild会在element中进行追加。 参考 DOM向HTML中添加元素Failed to execute ‘appendChild’ on ‘Node’: parameter 1 is not of type 'Node’问题 js中appendChild(

qq_33934427的博客 402

html中text+的value,jQuery中的text()、html()和val()以及javaScript中的innerText、innerHTML和value...

*jQuery中设置或者获取所选内容的值:text();设置或者获取所选元素的文本内容;html();设置或者获取所选元素的内容(包括html标记);val();设置或者获取表单字段的值(前提是表单设置了value属性);(text()和html()的区别是:前者是处理的文本内容,只能写文本如果写了上面的标记则会以文本形式输出;后者可以解析文本中的html标记,就是你可以添加像、)*JavaScr...

weixin_42573113的博客 276

基于HTML5的连连看游戏开发实践

在这个项目中,我们使用HTML5、CSS3和原生JavaScript开发了一个经典的连连看游戏。游戏具有美观的界面、流畅的动画效果和智能的路径检测算法,是一个非常有趣的Web游戏开发实践。游戏逻辑的实现动画效果的优化性能问题的解决代码组织的优化这些经验对于今后的Web游戏开发都有很大的帮助。同时,项目中的很多技术点和优化方案也可以应用到其他类型的Web应用开发中。

qq_43129878的博客 1480

页面开发注意事项积累

一、结构语义化 结构中主要包括了head和body两个部分,但是我们经常说的是结构语义化主要是body中的标签,但是我在这里还是简单的说一下head,head中其实包括了一些对于我们SEO很有用的一些东西,比如title,description,keywords,这些东西在蜘蛛抓取的时候都是有帮助的,当然,还有其他的一些,我在此就不一一说明了,比如设置缓存等一些其他的信息。 那么bod

zhaoy_m1501的博客 339

JavaScript篇:事件流:从点击到冒泡,揭秘DOM事件的‘旅行路线

作为一名前端开发者,我经常被问到这样的问题:"为什么我在子元素上点击,父元素也能收到事件?"或者"我怎么阻止事件继续传播?"这些问题其实都跟DOM事件流有关。今天,就让我们一起来探索这个看似简单却暗藏玄机的事件传播机制。

欢迎来到我的前端博客!这里汇集了关于前端开发的最新技术、实用工具和经验分享。我将为你提供详细的教程、代码示例和实战案例,帮助你掌握Web开发的核心概念和技能。不论你是初学者还是有经验的开发者,这个博客都适合你。 1211

JavaScript学习笔记(一)在Html中如何使用Javascript

这是我学习javascript的第一篇学习日记,一开始写这篇bolg的时候感觉很基础以至于无处可写,无非就是把javascript代码放到<script>元素标签中,运行文件时可以让javascript代码被加载解析就行了。但细细思考,其实还有很多细节的地方需要注意,比如script标签放的位置不同会有不同的效果,为什么会出现<script...

Mike777777的博客 356

WEB前端开发自学路线,html+css+JavaScript的学习方法,快收藏

学习前端的几个阶段: 一阶段:html标签、html5新增标签、css样式、css3样式、媒体查询等 二阶段:JavaScript、jQuery、ajax、面向对象、http传输协议等 三阶段:canvas、js高级应用、JS-SDK、H5新增技术 四阶段:node.js、vue.js 第一阶段——HTML的学习 超文本标记语言(HyperText Mark-up Language 简称HTML)是一个网页的骨架,无论是静态网页还是动态网页,最终返回到浏览器端的都是HTML代码,浏览器将HT

webqianduan1的博客 594

前端 WEB-API 第一天 DOM 与 选择器 介绍

学习完 js 7天之后学 web API 7 提示一下:js 里面字符串使用单引号 html标签中使用双引号 记住 前言:我们呢一起写完了7天的零基础js入门篇,记住以后实际开发中,API跟基础的7天的知识密不可分。静静我呢最近,给大家分享我最近喜欢的几句话。 第一句就是:无关生死,任何事情都是小事, 第二句就比较励志:一定要坚持你所做的事情,哪怕命运无数次给你击倒,至少我们反抗过命运。学习和任何...

weixin_33693070的博客 178
上一篇: 【经验积累】js 同一层函数内,定义变量的操作最先执行
下一篇: 表单验证 Validator v1.05
BenjaminP
博客等级 码龄15年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值