JavaScript基础(一)

1.JavaScript是什么

在这里插入图片描述

  • JavaScript的组成部分
    • BOM\DOM\ECMAScript
  • BOM–Browser Object Model
    • JS 操作浏览器发生变化的属性和方法
  • DOM— Document Object Model
    • JS 操作文档流发生变化的属性和方法
  • ECMAScript
    • JS 的书写语法和书写规则

2.JavaScript的书写位置

1.行内式

<body>
  <!-- a 标签书写行内式 js 代码 -->
  <a href="javascript: alert('hello world') ;">点我一下</a>

  <!-- 非 a 标签书写行内式 js 代码 -->
  <div onclick=" alert('hello world') ">点我一下</div>
</body>

2.内嵌式

<body>
  <script>
    alert('hello world')
  </script>
</body>

3.外链式

<body>
    /*引入js文件*/
  <script src="./test.js"></script>
</body>

text.js

alert('hello world')

3.JS定义变量

var num = 100

在这里插入图片描述

4.JS注释

1.单行注释:

//这是js单行注释

2.多行注释

/*这是js多行注释,

可以换行书写

*/

5.JS打印输入

1.alert

alert('Hello world!')

在浏览器弹窗显示

2.console.log

console.log('Hello world')

在控制台打印

3.document.write

document.write('Hello world')

直接在页面输出

在这里插入图片描述

6.JS数据类型

1.基本数据类型

1.数值类型

  • 整数、浮点数(小数、分数)、科学计数法等都属于数值类型
    在这里插入图片描述

在这里插入图片描述

2.字符串类型

以单双引号包含的都是字符串类型,单双引号没有区别

3.布尔类型

true/false

4.空类型

  • Undefined
    • 表示没有值
  • Null
    • 表示有一个值,是空值

2.引用数据类型

3.使用typeof检测数据类型

在这里插入图片描述

var result = typeof var1

4.数据类型的转换

1.转数值

var n1 = Number(var1)

  • NaN表示转换的东西并非一个合法数字

var n1 = parseInt(var1)

  • parseInt会一个一个对比,只有第一个不是整数就会出现NaN,如果前面是整数,后面不是就会显示前面的整数,而不是NaN

var v1 = parseFloat(var1)

2.转字符串

①String( )

② . toString( )

3.转布尔

①Boolean( )

  • 结果:true or false
  • 会转换为false的内容:
    • 0
    • NaN
    • ‘’(空字符串)
    • undefined
    • null

7.运算符

1.算术运算符

在这里插入图片描述

2.赋值运算符

在这里插入图片描述

3.比较运算符

在这里插入图片描述

  • 全等于必须数据类型与值都相同才为真

4.逻辑运算符

在这里插入图片描述

5.自增与自减运算符

①++

②–

在这里插入图片描述

8.条件分支语句

在这里插入图片描述

9.经典案例–平年还是闰年

在这里插入图片描述

<script>

  // 定义一个变量表示年份信息
  var year = 2078
  // 书写 if 语句进行判断
  if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
    console.log(year + ' 是闰年')
  } else {
    console.log(year + ' 不是闰年')
  }

<script>

10.条件分支语句–switch

在这里插入图片描述

  • 注意每个case语句后面必须写default,否则会向下穿透

11.循环结构语句–while

在这里插入图片描述

12.循环结构语句–do while

在这里插入图片描述

13.循环结构语句–for

在这里插入图片描述

14.函数

1.函数的定义

在这里插入图片描述

2.函数的调用

  • 语法:
    • 函数名( )

3.形参与实参

  • 在函数定义时的参数叫做形参,实参指的是调用函数式给的参数

4.函数的返回值

在函数内使用return关键字给函数添加一个结果作为函数的返回值

5.递归函数

  • 递归函数就是函数调用自己

15.作用域

  • 作用域指的是一个变量可以在什么范围内使用

在这里插入图片描述

16.对象数据类型

1.对象的定义

var object={

hair:'none',

head:'yes'

}

2.对象的操作

//准备一个空对象
var obj={ }
//增加成员
obj.name = '小灰灰'
obj['age'] = 18
obj.gender = '男'

//删除一个键值对
//语法一:
delete obj.name
//语法二:
delete obj['age']

//修改
obj.name = '灰太狼'
obj['age'] = 20

//查
console.log(obj.name)
console.log(obj['age'])

17.数组数据类型

  • 数组:有序的,数据的集合
  • 索引是从零开始
  • 中间的数据类型没有限制
var arr = [100,200,300,400]
//获取数组长度
console.log(arr.length)
//修改数组长度:
arr.length = 3
//获取数据中索引为2的数据
console.log(arr[2])
//修改数组中索引为2的值
arr[2] = 100

//数组的遍历
for( var i=0;i<arr.length,i++){
    console.log(arr[2])
}

18.数组常用方法

1.push

在这里插入图片描述

2.pop

在这里插入图片描述

3.unshift

在这里插入图片描述

4.shift

在这里插入图片描述

5.reverse

在这里插入图片描述

6.splice

在这里插入图片描述

7.sort

  • 默认是位操作,所以a-b代表从小到大排序,b-a表示从大到小排序

在这里插入图片描述

8.join

在这里插入图片描述

9.concat

在这里插入图片描述

10.slice

在这里插入图片描述

11.indexOf

在这里插入图片描述

12.forEach

在这里插入图片描述

  • arr表示原始数组

13.map

在这里插入图片描述

  // 准备一个原始数组
  var arr = [ 100, 200, 300, 400 ]
  // 输出一次
  console.log( arr )

  // 执行 map 方法
  var res = arr.map( function (item, index, arr) {
	
    // 以 return 的方式书写映射条件    
      return item * 10
  } )
  // 输出返回值
  console.log( res )

在这里插入图片描述

14.filter

在这里插入图片描述

  // 准备一个原始数组
  var arr = [ 100, 200, 300, 400 ]
  // 输出一次
  console.log( arr )

  // 执行 filter 方法
  var res = arr.filter( function (item, index, arr) {
	
    // 以 return 的方式书写过滤条件   
      return item > 150
  } )
  // 输出返回值
  console.log( res )

15.every

在这里插入图片描述


  // 准备一个原始数组
  var arr = [ 100, 200, 300, 400 ]
  // 输出一次
  console.log( arr )

  // 执行 every 方法
  var res = arr.every( function (item, index, arr) {
	
    // 以 return 的方式书写条件    
      return item > 150
  } )
  // 输出返回值
  console.log( res )

16.some

在这里插入图片描述

  // 准备一个原始数组
  var arr = [ 100, 200, 300, 400 ]
  // 输出一次
  console.log( arr )

  // 执行 some 方法
  var res = arr.some( function (item, index, arr) {
	
    // 以 return 的方式书写条件    return item > 150
  } )
  // 输出返回值
  console.log( res )

17.总结

在这里插入图片描述

19.字符串常用方法

1.charAt

在这里插入图片描述

2.toLowerCase

在这里插入图片描述

3.toUpperCase

在这里插入图片描述

4.replace

  • 注意只能替换一次

在这里插入图片描述

5.trim

在这里插入图片描述

6.split

在这里插入图片描述

7.substr\substring\slice

在这里插入图片描述

  • substring与slice都是左闭右开

8.总结

在这里插入图片描述

20.数字常用方法

1.random

在这里插入图片描述

  • 注意Math开头字母必须大写

2.round

在这里插入图片描述

3.ceil&floor

在这里插入图片描述

4.pow

在这里插入图片描述

5.sqrt

在这里插入图片描述

6.abs

在这里插入图片描述

7.max

在这里插入图片描述

8.min

在这里插入图片描述

9.PI

在这里插入图片描述

10.案例–获取范围内的整数

在这里插入图片描述

11.总结

在这里插入图片描述

21.时间常用方法

1.创建时间对象

  • 时间(Date)
  • var time = new Date()
    // 时间对象

    // 第一段
    // // 创建一个时间对象
    // var time = new Date()

    // // 输出一次
    // console.log( time )

    // 第二段
    // 创建一个时间对象
    var time = new Date( 2002, 1, 23, 11, 22, 18 )

    // 输出一次
    console.log( time )

2.获取时间中的信息

序号方法名说明
1时间对象.getFullYear()年份
2.getMonth()月份
3getDate()日期
4getHours()小时
5getMinutes()分钟
6getSeconds()
7getDay()星期
8getTime()时间戳
 // 时间对象
// 创建一个时间对象
var time = new Date( 2021, 2, 31, 9, 40, 25 )

// 输出一次
console.log( time )

// 获取时间对象中的年份信息
var year = time.getFullYear()

// 输出年份信息
console.log( year )

// 获取时间对象中的月份信息
var month = time.getMonth()

// 输出月份信息
console.log( month )

// 获取时间对象中的日期信息
var date = time.getDate()

// 输出日期信息
console.log( date )

// 获取时间对象中的小时信息
var hours = time.getHours()

// 输出小时信息
console.log( hours )

// 获取时间对象中的分钟信息
var minutes = time.getMinutes()

// 输出分钟信息
console.log( minutes )

// 获取时间对象中的秒钟信息
var seconds = time.getSeconds()

// 输出秒钟信息
console.log( seconds )

// 获取时间对象中的星期信息
var week = time.getDay()

// 输出星期信息
console.log( week )

// 获取时间对象中的时间戳信息
var ms = time.getTime()

// 输出时间戳信息
console.log( ms )

3.设置时间中的信息

    // 时间对象

    // 创建一个时间对象
    var time = new Date()

    // 输出一次
    console.log( time )

    // 设置年份信息
    time.setFullYear( 2002 )
    // 设置月份信息
    time.setMonth( 1 )
    // 设置日期信息
    time.setDate( 23 )
    // 设置小时信息
    time.setHours( 11 )
    // 设置分钟信息
    time.setMinutes( 22 )
    // 设置秒钟信息
    time.setSeconds( 18 )

	//time.setTime(数字),传递一个时间差

    // 再次输出时间对象
    console.log( time.getTime() )

4.获取时间差

   // 案例 - 时间差

    // 第一段
    // // 1. 准备两个时间节点
    // var time1 = new Date( 2021, 1, 23, 11, 22, 18 )
    // var time2 = new Date( 2021, 1, 25, 3, 45, 36 )

    // // 2. 获取到两个时间节点的时间戳
    // var ms1 = time1.getTime()
    // var ms2 = time2.getTime()

    // // 3. 两个时间戳相减得到相差的毫秒数
    // var sub = ms2 - ms1

    // // 输出一下相差的毫秒数
    // console.log( sub )

    // 第二段
    // // 1. 准备两个时间节点
    // var time1 = new Date( 2021, 1, 23, 11, 22, 18 )
    // var time2 = new Date( 2021, 1, 25, 3, 45, 36 )

    // // 2. 获取到两个时间节点的时间戳
    // var ms1 = time1.getTime()
    // var ms2 = time2.getTime()

    // // 3. 两个时间戳相减得到相差的秒数
    // var sub = Math.ceil( (ms2 - ms1) / 1000 )

    // // 输出一下相差的毫秒数
    // console.log( sub )


    // 第三段
    // // 1. 准备两个时间节点
    // var time1 = new Date( 2021, 1, 23, 11, 22, 18 )
    // var time2 = new Date( 2021, 1, 25, 3, 45, 36 )

    // // 2. 获取到两个时间节点的时间戳
    // var ms1 = time1.getTime()
    // var ms2 = time2.getTime()

    // // 3. 两个时间戳相减得到相差的秒数
    // var sub = Math.ceil( (ms2 - ms1) / 1000 )

    // // 4. 开始换算
    // // 4-1. 换算天
    // var day = Math.floor( sub / ( 60 * 60 * 24 ) )
    // // 4-2. 换算小时
    // var hours = Math.floor( sub % ( 60 * 60 * 24 ) / ( 60 * 60 ) )
    // // 4-3. 换算分钟
    // var minutes = Math.floor( sub % ( 60 * 60 ) / 60 )
    // // 4-4. 换算秒钟
    // var seconds = sub % 60

    // console.log(day, hours, minutes, seconds)


    // 第四段
    // 1. 准备两个时间节点
    var time1 = new Date( 2021, 1, 23, 11, 22, 18 )
    var time2 = new Date( 2021, 1, 25, 3, 45, 36 )

    // 准备一个函数, 接受两个参数
    function getDiff( time1, time2 ) {

      // 获取到两个时间节点的时间戳
      var ms1 = time1.getTime()
      var ms2 = time2.getTime()
      // 两个时间戳相减得到相差的秒数
      var sub = Math.ceil( (ms2 - ms1) / 1000 )
      // 开始换算
      var day = Math.floor( sub / ( 60 * 60 * 24 ) )
      var hours = Math.floor( sub % ( 60 * 60 * 24 ) / ( 60 * 60 ) )
      var minutes = Math.floor( sub % ( 60 * 60 ) / 60 )
      var seconds = sub % 60

      return { day: day, hours: hours, minutes: minutes, seconds: seconds }

    }

    // 需要获取 time1 和 time2 之间的时间差
    var res = getDiff( time1, time2 )
    console.log(res)

22.BOM操作

  • Browser Object Model
  • 在这里插入图片描述

1.获取浏览器窗口尺寸

在这里插入图片描述

2.浏览器的弹出层

在这里插入图片描述

    // 浏览器的弹出层

    // 提示框
    // window.alert( '欢迎光临' )

    // 询问框
    // var res = window.confirm( '你爱我吗 ?' )

    // // // 输出返回值--true or false
    // console.log( res )

    // // 输入框
    var res = window.prompt(' 请输入您的银行卡密码 ')

    // // 输出返回值
    console.log( res )

3.开启和关闭标签页

在这里插入图片描述

  // 开启按钮的点击事件
    on.onclick = function () {
      // 开启标签页
      window.open( 'http://www.mobiletrain.org/' )
    }

    // 关闭按钮的点击事件
    off.onclick = function () {
      // 关闭标签页
      window.close()
    }

4.浏览器常见事件

在这里插入图片描述

    // // 资源加载完毕
    // window.onload = function () {
    //   console.log( '资源已经加载完毕' )
    // }


    // 窗口尺寸改变
    // window.onresize = function () {
    //   console.log( '窗口尺寸发生变化了' )
    // }

    // 滚动条位置改变
    window.onscroll = function () {
      console.log( '滚动条位置改变了' )
    }

5.浏览器的历史记录操作

在这里插入图片描述

6.浏览器卷去的尺寸

在这里插入图片描述

在这里插入图片描述

  • 在有标签的时候可以使用第一个
  • 否则使用第二个
    // 滚动条位置变化
    // window.onscroll = function () {
    //   // 有 DOCTYPE 标签
    //   // console.log( document.documentElement.scrollTop )
    //   // // 没有有 DOCTYPE 标签
    //   // console.log( document.body.scrollTop )

    //   // 兼容
    //   var height = document.documentElement.scrollTop || document.body.scrollTop
    //   console.log( height )
    // }

    window.onscroll = function () {
      // 有 DOCTYPE 标签
      // console.log( document.documentElement.scrollLeft )
      // // 没有有 DOCTYPE 标签
      // console.log( document.body.scrollLeft )

      // 兼容
      var height = document.documentElement.scrollLeft || document.body.scrollLeft
      console.log( height )
    }

7.浏览器滚动到

在这里插入图片描述

在这里插入图片描述

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    body { width: 3000px; height: 3000px; }

    button { position: fixed; bottom: 50px; right: 50px; }
  </style>
</head>
<body>

  <button id="go"> 走你 </button>
  <script>
    // // 按钮添加点击行为
    // go.onclick = function () {
    //   // 浏览器滚动到指定位置
    //   window.scrollTo( 300, 400 )
    // }
    // 按钮添加点击行为
    go.onclick = function () {
      // 浏览器滚动到指定位置
      window.scrollTo({
        left: 300,
        top: 400,
        behavior: 'smooth'
      })
    }
  </script>
</body>

8.总结

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

23.JavaScript的定时器

1.间隔定时器

  • 按照指定周期(毫秒)去执行指定的代码

在这里插入图片描述

    // 间隔定时器
    // 书写一个定时器
    setInterval(function () {
      console.log( '执行一次' )
    }, 1000)

2.延时定时器

  • 在固定的时间(毫秒)后指定一次代码

在这里插入图片描述

    // 间隔定时器
    // 书写一个定时器
    setTimeout(function () {
      console.log( '执行一次' )
    }, 1000)

3.定时器的返回值

在这里插入图片描述

    // 定时器返回值
    // 书写第一个定时器
    var timer1 = setInterval(function () {}, 1000)
    // 书写第二个定时器
    var timer2 = setTimeout(function () {}, 1000)
    // 输出返回值,表示当前页面的第几个定时器
    console.log( 'timer1 : ', timer1 )
    console.log( 'timer2 : ', timer2 )
  • 作用,用来关闭定时器

4.关闭定时器

在这里插入图片描述

  • 可以相互关闭,不区分类型
    // 定时器返回值
    // 开启定时器
    // 书写第一个定时器
    var timer1 = setInterval(function () {
      console.log('间隔定时器')
    }, 1000)
    // 书写第二个定时器
    var timer2 = setTimeout(function () {
      console.log('延时定时器')
    }, 3000)
    // // 给按钮绑定点击事件
    off.onclick = function () {
      // 关闭定时器
      clearInterval(timer1)
      clearInterval(timer2)
    }

5.总结

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的id的验证) 1.3 负整数的验证 1.4 整数不能大于imax 1.5 整数不能小于imin 2、时间类 2.1 短时间,形如 (13:04:06) 2.2 短日期,形如 (2003-12-05) 2.3 长时间,形如 (2003-12-05 13:04:06) 2.4 只有年和月。形如(2003-05,或者2003-5) 2.5 只有小时和分钟,形如(12:03) 3、表单类 3.1 所有的表单的值都不能为空 3.2 多行文本框的值不能为空。 3.3 多行文本框的值不能超过smaxstrleng 3.4 多行文本框的值不能少于smixstrleng 3.5 判断单选框是否选择。 3.6 判断复选框是否选择. 3.7 复选框的全选,多选,全不选,反选 3.8 文件上传过程中判断文件类型 4、字符类 4.1 判断字符全部由a-z或者是a-z的字字母组成 4.2 判断字符由字母和数字组成。 4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 4.4 字符串替换函数.replace(); 5、浏览器类 5.1 判断浏览器的类型 5.2 判断ie的版本 5.3 判断客户端的分辨率 6、结合类 6.1 email的判断。 6.2 手机号码的验证 6.3 身份证的验证 二、功能类 1、时间与相关控件类 1.1 日历 1.2 时间控件 1.3 万年历 1.4 显示动态显示时钟效果(文本,如oa中时间) 1.5 显示动态显示时钟效果 (图像,像手表) 2、表单类 2.1 自动生成表单 2.2 动态添加,修改,删除下拉框中的元素 2.3 可以输入内容的下拉框 2.4 多行文本框中只能输入imax文字。如果多输入了,自动减少到imax个文字(多用于短信发送) 3、打印类 3.1 打印控件 4、事件类 4.1 屏蔽右键 4.2 屏蔽所有功能键 4.3 --> 和<-- f5 f11,f9,f1 4.4 屏蔽组合键ctrl+n 5、网页设计类 5.1 连续滚动的文字,图片(注意是连续的,两段文字和图片中没有空白出现) 5.2 html编辑控件类 5.3 颜色选取框控件 5.4 下拉菜单 5.5 两层或多层次的下拉菜单 5.6 仿ie菜单的按钮。(效果如rongshuxa.com的导航栏目) 5.7 状态栏,title栏的动态效果(例子很多,可以研究一下) 5.8 双击后,网页自动滚屏 6、树型结构。 6.1 asp+sql版 6.2 asp+xml+sql版 6.3 java+sql或者java+sql+xml 7、无边框效果的制作 8、连动下拉框技术 9、文本排序 10,画图类,含饼、柱、矢量贝滋曲线 11,操纵客户端注册表类 12,div层相关(拖拽、显示、隐藏、移动、增加) 13,tablae相关(客户端动态增加行列,模拟进度条,滚动列表等) 14,各种<object classid=>相关类,如播放器,flash与脚本互动等 16, 刷新/模拟无刷新 异步调用类(xmlhttp或iframe,frame)
JavaScript电子书,包括了JavaScript的大部分知识,可以帮助读者快速入门。内容如下: 第1章 JavaScript语言概述 1.1 JavaScript是什么 1.1.1 JavaScript简史 1.1.2 JavaScript有何特点 1.2 JavaScript能做什么 1.2.1 表单数据合法性验证 1.2.2 页面特效 1.2.3 交互式菜单 1.2.4 动态页面 1.2.5 数值计算 1.3 JavaScript编程起步 1.3.1 “Hello World!”程序 1.3.2 选择JavaScript脚本编辑器 1.4 如何引入JavaScript脚本代码 1.4.1 通过与标记对引入 1.4.2 通过标记的src属性引入 1.4.3 通过JavaScript伪URL引入 1.4.4 通过HTML文档事件处理程序引入 1.5 嵌入JavaScript脚本代码的位置 1.5.1 在与标记对之间放置 1.5.2 在与标记对之间放置 1.5.3 在两个标记对之间混合放置 1.6 选择合适的浏览器 1.7 处理不支持JavaScript脚本的情况 1.7.1 使用标记对直接屏蔽法 1.7.2 使用和标记对给出提示信息 1.8 JavaScript的实现基础 1.8.1 ECMAScript 1.8.2 DOM 1.8.3 BOM 1.9 客户端与服务器端脚本 1.10 JavaScript与JScript、 VBScript 1.11 JavaScript与Java、Java applet 1.12 JavaScript的未来如何 1.13 本章小结 第2章 JavaScript语言入门 2.1 编程准备 2.1.1 编程术语 2.1.2 脚本执行顺序 2.1.3 大小写敏感 2.1.4 空白字符 2.1.5 分号 2.1.6 块 2.2 数值类型 2.2.1 整型和浮点数值 2.2.2 八进制和十六进制 2.3 变量 2.3.1 变量标识符 2.3.2 变量申明 2.3.3 变量作用域 2.4 弱类型 2.5 基本数据类型 2.5.1 Number型 2.5.2 String型 2.5.3 Boolean型 2.5.4 Undefined型 2.5.5 Null型 2.5.6 Function型 2.6 组合类型 2.6.1 Array型 2.6.2 Object型 2.7 运算符 2.7.1 赋值运算符 2.7.2 基本数学运算符 2.7.3 位运算符 2.7.4 位移运算符 2.7.5 自加和自减 2.7.6 比较运算符 2.7.7 逻辑运算符 2.7.8 逗号运算符 2.7.9 空运算符 2.7.10 ?...:运算符 2.7.11 对象运算符 2.7.12 typeof运算符 2.7.13 运算符优先级 2.8 核心语句 2.8.1 基本处理流程 2.8.2 if条件假设语句 2.8.3 switch流程控制语句 2.8.4 for循环语句 2.8.5 while和do-while循环语句 2.8.6 使用break和continue进行循坏控制 2.8.7 with对象操作语句 2.8.8 使用for…in进行对象循坏 2.8.9 含标签的语句 2.9 函数 2.9.1 函数的基本组成 2.9.2 全局函数与局部函数 2.9.3 作为对象的函数 2.9.4 函数递归调用 2.9.5 语言注释语句 2.9.6 函数应用注意事项 2.10 本章小结 第3章 JavaScript事件处理 3.1 什么是事件 3.2 HTML文档事件 3.2.1 事件捆绑 3.2.2 浏览器事件 3.2.3 HTML元素事件 3.2.4 IE扩展的事件 3.3 JavaScript如何处理事件 3.3.1 匿名函数 3.3.2 显式声明 3.3.3 手工触发 3.4 事件处理器的返回值 3.5 事件处理器设置的灵活性 3.6 现代事件模型与Event对象 3.7 IE4中的Event对象 3.7.1 对象属性 3.7.2 事件上溯 3.7.3 阻止事件上溯 3.7.4 事件改向 3.8 NN4中的Event对象 3.8.1 对象属性 3.8.2 事件捕获 3.8.3 关闭事件捕获 3.8.4 事件传递 3.9 DOM的解决之道

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值