JavaScript添加列表操作

js(DOM)基础:12、DOM查询3、DOM增删改、DOM删除列表、DOM添加列表、DOM操作遇到问题 本文介绍了JavaScript中DOM查询的多种方法,包括获取body/html标签(document.body/document.documentElement)、查询所有元素(document.all)、根据class属性查询(getElementsByClassName/getElementsByTagName)以及使用querySelector()和querySelectorAll()进行CSS选择器查询。第二部分详细讲解了DOM增删改操作,如createElement创建元素节点、createTe 阅读详情

在这里插入图片描述

实现效果:

按照顺序自动生成编号,点击提交按钮后,将输入框中的内容添加进入列表当中。以及下拉框来选择性别为男或女。并且当输入框内容为空时,不向列表中添加元素,并且顶部字体变为红色。

包含的相关dom事件练习,onclick事件,获取元素getElement,创建元素createElement,元素节点appendChlid

HTML代码

​
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="list.css" rel="stylesheet" type="text/css">
</head>
<body>

    <p>请输入内容</p>
    <input class="input" id="name" type="text" placeholder="请输入姓名">
    <input class="input" id="piece" type="text" placeholder="请输入代表作">
    <select id="sex">
        <option value="男">男</option>
        <option value="女">女</option>
    </select>
    <button id="submit">提交</button>
    <br>
    <div>
        <table id="table">
            <tr>
                <th class="no">编号</th>
                <th>姓名</th>
                <th>性别</th>
                <th>代表作</th>
            </tr>
        </table>
    </div>

    <script type="text/javascript" src="list.js"></script>

</body>
</html>

​

CSS代码

body{
    margin-top: 50px;
    text-align: center;
}
table{
    margin-top: 20px;
    position: relative;
    left: 300px;
    border-collapse: collapse;
}

td,th{
    width: 300px;
    height: auto;
    text-align: center;
    border: solid black;
    border-collapse: collapse;
}

.no{
    width: 50px;
    height: auto;
    text-align: center;
    border: solid black;
    border-collapse: collapse;
}
p{
    font-size: 60px;
    text-align: center;
    color: black;
}

p.error{
    color: red;
}

JavaScript

var submit = document.getElementById("submit");
var name = document.getElementById("name");
var sex = document.getElementById("sex");
var piece = document.getElementById("piece");
var table = document.getElementById("table");
var p = document.querySelector("p");

var i = 0;

window.onload = function () {
    submit.onclick = function () {

        if(!(name.value.trim()&&sex.value.trim()&&piece.value.trim())){//trim用来去掉空格

            p.className = "error";
            return
        }

        i++;

        var tr = document.createElement("tr");
        table.appendChild(tr);

        var no = document.createElement("td");
        no.className = "no"
        var newname = document.createElement("td");
        var newsex = document.createElement("td");
        var newpiece = document.createElement("td");

        no.innerText = i;
        newname.innerText = name.value;
        newsex.innerText = sex.value;
        newpiece.innerText = piece.value;

        tr.appendChild(no);
        tr.appendChild(newname);
        tr.appendChild(newsex);
        tr.appendChild(newpiece);

        name.value = "";
        sex.value = "";
        piece.value = "";
    }

}


这里出现过的问题,IE浏览器可以运行,但是Chrome浏览器会没办法获取 name元素

在这里插入图片描述

问题解决:因为这里使用id时用了“name” 而name刚好是window默认属性里的自带属性,所以出现了命名重复的情况,所以无法获取name值

所以应当将代码片段中的name 改为其他命名

告别Keil手动分区!用CubeMX+VS Code一键生成带Bootloader的STM32 OTA工程 本文详细介绍了如何利用STM32CubeMX和VS Code实现STM32 OTA工程的自动化构建,告别传统Keil手动分区的繁琐流程。通过图形化配置Flash分区、自动生成链接脚本以及实现Bootloader跳转逻辑,开发者可以高效完成远程升级功能开发,显著提升嵌入式开发效率。 阅读详情

相关推荐

Docker部署 SRS rtmp/flv流媒体服务器

SRS(Simple Realtime Server)是一款开源的流媒体服务器,具有高性能、高可靠性、高灵活性的特点,能够支持直播、点播、转码等多种流媒体应用场景。SRS 不仅提供了流媒体服务器,还提供了适用于多种平台的客户端 SDK 和在线转码等辅助服务,是一款十分强大的流媒体解决方案。

m0_56659620的博客 4869

JavaScript基础 实现动态创建列表

实现动态创建列表 获取元素的六种方式 创建元素的三种方式

等归,的博客 2978

Python爬虫:无账号无限制获取企查查信息

无限制企查查爬虫 ​通过网上爬虫获取了全国所有企业,然后就需要补充企业信息,首先想到的就是企查查,启信宝等专业网站,最终选择了企查查,尝试了多种方法: 1、selenium爬虫,绕过企查查的登录验证,但账号和IP限制太大,最终放弃 2、通过requests直接请求+cookies,遇到了cookie有效期和限制问题 不断的尝试和修改参数,最终发现一种有效方式selenium+ wep 只需要IP代理,不需要账号,没有限制,因为是没有登录,拿到的信息有限,能展示的都能获取。 一、初始化..

攻城狮的家园 1万+

js添加元素的三种方法

点击按钮变为: 提前说下结论:善用innerHTML属性,但是不能过于依赖,否则会造成改动过大,不利于程序稳定性。 首先,结构部分为: <div> <ol> <li id="spe">speedo</li> <li>arena</li> <li>balenire</li> </ol> .

Julienling的博客 1万+

从EXIF到测绘:解码大疆影像元数据的实战应用指南

本文深入解析了大疆无人机影像元数据的实战价值,重点阐述了如何利用EXIF和XMP中的GPS、RTK、姿态角及相机内参等关键信息,提升测绘、三维重建及精准农业等项目的成果精度与效率。通过自动化质检脚本与行业应用场景剖析,指导从业者将元数据从信息转化为生产力,实现从拍照到专业测绘的跨越。

dell8的博客 526

工业缺陷检测的新范式:2025-2026年零样本检测技术全景扫描

摘要: 工业视觉领域面临缺陷样本稀缺、标注成本高等痛点,零样本缺陷检测(Zero-Shot Defect Detection)成为研究热点。2025-2026年的技术进展主要分为三类:1)视觉-语言模型(VLM)路线,如CLIP适配器跨域对齐热成像数据;2)数字孪生路线,通过CAD模型生成理想状态对比检测缺陷;3)基于CLIP的提示学习,如Crane模型通过上下文提示提升泛化能力。尽管实验室效果显著(如IoU达70%),但在真实工业场景(如MIRAD数据集)中性能平均下降29.78%,凸显跨域泛化仍是挑战。

blanokvaffy的博客 1144

前端学习-第二阶段-day11

今日练习 利用事件代理,实现添加后的列表也可以触发点击事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <styl

qq_34723035的博客 312

Windows原生环境配置Tensorflow使用GPU

本文讲解如何在Windows原生环境搭建可调用GPU设备进行计算的Tensorflow2.x环境。 区别于WSL,使用Windows原始环境作为开发环境。

天然玩家的博客 1499

JavaScript常用的列表方法

push():在列表添加一个或者多个元素。pop():移除并返回列表的最后一个元素unshift():在列表添加一个元素或者多个元素shift():在列表删除一个元素concat():连接两个或多个列表,并返回一个新的列表slice():返回子列表splice():从列表中添加、移除或替换元素。indexof():返回指定元素在列表中首次出现的索引lastIndexof():返回指定元素在列表中最后一次出现的索引join():将列表中的所有元素以join函数中参数指定的字符形式连接起来。

l1965564484的博客 2418

PCB制造工艺参数到AD规则设置

本文提供了PCB设计与制造的落地指南,强调需先了解PCB厂的工艺参数,再在Altium Designer中设置相应规则。核心步骤包括:获取PCB厂的关键工艺参数(线宽/线距、过孔尺寸等),在AD中设置电气规则、布线规则、阻焊规则等,并进行DRC检查。文章还给出了常见问题避坑建议和快速落地模板,帮助设计师确保设计符合生产要求,避免因工艺不匹配导致的报废或成本增加。

qq_37999850的博客 292

Unity必学:Protobuf-net预编译实战

本文深入解析Unity项目使用Protobuf-net Precompile的必要性。作为高效跨平台序列化方案,Protobuf-net解决了Unity工程在网络同步、存档系统中的性能瓶颈,特别是针对iOS等AOT平台的兼容问题。通过预编译模式,将运行时反射转为静态代码生成,显著提升移动端性能表现,支持协议平滑升级,已成为大厂项目的标配方案。文章从原理、实践到多平台适配,全面展示了这一"序列化发动机"如何支撑现代Unity项目的数据传输需求。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 495

JS 添加数组元素( 4种方法 )

ush() 和 unshift() 方法会直接修改原数组。 splice() 方法同样会直接修改原数组,但它还可以用来同时删除和插入元素。 concat()方法不会改变原数组,而是返回一个新的数组。

大剑师兰特的GIS世界 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JavaScript练习(八)——列表的添加删除操作

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #BiaoGe{ left: 800px; top: 200px; position:absolute; } #TianJia{ .

weixin_45927758的博客 644

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JS操作下拉列表(添加,清空,循环值)

http://www.w3.org/1999/xhtml" >    无标题页// function Button2_onclick() {//向下拉列表添加值    var select=document.getElementById("select");    var option = new Option(韩国料理,62);    select.options.add(optio

生活要快乐 - 魏言 6173

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

javascript操作两个选择列表(有两个列表,如何实现在一个列表通过双击和多选列表中内容添加到另一个列表. )

       本程序要求实现的功能如下:      有两个列表,如何实现在一个列表通过双击和多选列表中内容添加到另一个列表.  Select Opvar o;function MoveTo(index){  if (index!=undefined)  {    o=source.options[index];      distinct.options.add(new Option(o.

yuqiangyuqiang的专栏 1989

JavaScript前端开发 DOM 列表的增删和移动

利用DOM操作节点的方式实现列表的增删和移动 case.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>列表的增删和移动</title> <style> body{background:#ddd;te...

IT_world_的博客 7320

原生js写列表

列表可以实现的功能有:添加元素、删除元素、在指定位置添加元素、清空、查看是否含有该元素、指针前移、后移等; function list(){ this.data=[]; this.listsize=0; this.pos=0; this.add=add; this.find=find; this....

weixin_43859703的博客 978

JavaScript - JS对象、数据类型、调用与事件绑定

笔记(自用): ======================== JS列表的添加于删除: ======================== 入栈、出栈操作: Push() Pop() 与栈相反,unshift、shift从头开始添加与删除 Unshift() Shift() **复习python中的列表操作 a = [1,2,3] a.append(5) a.r...

⚡ 795

vue.对列表增删操作

基础,并没有用到vue的核心,只是帮助入门理解,用比较简单的逻辑和比较多的代码完成此项任务 实现增删操作,还有对输入框的数据非空,查重,添加后清空文本框内容

成长的嘻嘻哥 1077

JavaScript列表的增删与移动

案例:列表的增删与移动 html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .list{ display:inline-block; background:#fff; color:#333; text-align:left;

Jasmyn1的博客 7244

JS数据结构---单向列表 难点添加insert操作封装解析

情况1:添加位置为0时 此时链表的指向可直接指向新添加的节点 情况2:position位置大于1时 此时定义两个变量Current,Previous为保存原来的位置 遍历每个节点 先将previous记录为使得current指向所需操作位置的节点,遍历结束后,将要添加的节点的NEXT指向current,Previous的NEXT 指向添加的节点 function LinkedList(){ function node(data,next){ this.data=data, .

梦想待招前端实习生 的博客 341

JS节点的属性及方法

前言学习了jquery等类库,可不能”忘本“,原生js才是它的根基。 ”但是前端技术发展到今天,如果你时常关注Github上一些流行的开源JS项目,你会发现这样一种趋势:开发者们越来越倾向于使用原生代码,而不依赖与第三方库。“一、属性Attributes 存储节点的属性列表(只读)childNodes 存储节点的子节点列表(只读)dataType 返回次节点的数据类型documen

front_end_fan 2532

列表生成器(js)2

已经傻掉的我:虽然这个功能已经基本可以实现,但是这个错误,我实在是找不出来是哪里出现的问题:(还请大佬多多指教!!!) 我也自己进行查找,可能是我理解的问题,还是不知道如何操作!! 改良的代码如下: css代码: .list{ display:inline-block; background:#fff; color:#333; text-align:left; font-size:20px; } .list-ul{ list-style:none; margin:0; padding:0; } .li.

vi_to的博客 917

js add方法_Vue.js列表过渡

进入/离开 & 列表过渡示例一:<style> /* 移动的时间 */ .fade-enter-active{ transition: all .3s ease; } /* 移动的方向,和过渡 */ .fade-leave-active{ transition: all .8s cubic-bezier(1.0, 0.5...

weixin_39838798的博客 138

vue——两种方式实现列表动态添加和删除

下面将介绍两种方式实现动态添加和删除列表 1.不使用组件 Vue 测试实例 - vue实现列表增加和删除 添加 {{list.title}} 删除 var vm = new Vue({ el: '#app', data: { newAddText:'', lists:[ {id:1,title:'手机号码'},

程序媛-jjl的博客 6万+

javascript动态添加本地文件列表信息

工作需要做了一个动态添加列表页面的小demo.用到了杂七杂八的javascript小知识. 而且并没有涉及到工作中的具体情境.有些通用,所以暂且罗列到这里.以后需要的时候可以直接拿来用. 看源码总是让人 无语.一知半解不知道说的什么. 下面是效果图.功能一看便知. 下面是源码 <!DOCTYPE html> <htm...

aori3524的博客 211
上一篇: Pythone实现用户注册和登录,包括3次输入错误的账户锁定
下一篇: C数据结构总结
代号[K]
博客等级 码龄8年 17粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值