自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

分享学习网络的点点滴滴

学习分享,提升自己,帮助他人!!!

  • 博客(533)
  • 资源 (82)
  • 收藏
  • 关注

原创 JavaScript样式、属性和类别

● 这种赋予style的方式是内联式的,所以我们通过这种方式去读取非内联式的CSS元素式读取不到的,但是在内联式里面的style可以读取到。● 但是这个只能读取到标准属性,例如我们在HTML中再添加一个属性。● 我们也可以动态设置文档根元素( 元素)的 CSS 变量的值。● 我们可以使用getAttribute()方法去读取到。● 我们可以通过JS读取到HTML文档中的各个属性。● 我们也可以使用上面的方法将高度增加。● 我们也可以对属性进行修改。● 当然我们也可以创建属性。● 下面的尽量不要使用。

2024-05-22 14:57:01 259

原创 JavaScript选择、创建、删除元素

在以后的学习中我们的源码如下:选择元素我们也可以在其后面插入元素● 但是我们发现,使用prepend或者append不仅仅是插入元素,也是移动它,因为元素只能出现在DOM的一个地方,就像一个人只能出现在一个地方一样,如果我们想在两个地方都出现,我们就需要去复制这个元素● 我们可以在元素之前或者之后插入● 现在我们将我们上面创建的元素删除掉在remove的方法没有出现之前,我们使用下面的这个方法,

2024-05-20 21:08:29 697

原创 DOM 的真正工作原理

● DOM允许我们使JavaScript与浏览器交互;● 我们可以编写JavaScript来创建、修改、删除HTML元素;设置样式、类和属性;监听和响应事件;● DOM树是从HTML文档中生成的,我们可以与它进行交互;

2024-05-19 21:50:59 143

原创 JavaScript实施倒计时器

● 我们先简单的写一个计时器● 然后再用户登录的代码段中去调用它● 但是这种明显不好看,我们以分钟和秒来倒计时会更加的好看${${● 接着我们再time为0的时候注销用户并更新UI${${● 上面的代码就能够实现,当time为0的时候注销用户了,但是细心的你会发现,这个代码定时器并不是立即执行的,而是过一秒再执行,但是我们想要的是立即执行。${${● 这样我们将函数拿出来,再定时器之前直接调用它,它就会被立即执行● 但是细心的我们又发现了一个问题,当时间为01的时候,就会更新UI,并不是等到00的时候。

2024-05-18 21:06:15 403

原创 定时器函数setTimeout 和 setInterval

定时器函数支持我们在几秒后再来运行代码;● 在回调函数中也可以传入参数${${● 定时器是JavaScript异步函数的一种,它并不是影响后面代码的执行${${● 清除定时器${${//这段代码设置了一个定时器来模拟制作披萨的时间。如果菠菜是其中一种配料,它会在定时器到期之前清除定时器,表示披萨已经准备好了。

2024-05-17 22:15:15 254

原创 国际化数字(intl)

上一篇文章我们学习了使用国际化的API对日期进行格式化,本次我们来学习使用国际化API对时间进行格式化;● 当然我们也可以像格式化日期一样,使用浏览器的语言来判断用户的地区● 还可以传入不通的参数,例如给数字加上一个单位,m/s● 或者加入摄氏度之类的温度单位● 或者是添加百分号● 或者是添加欧元或者其他货币符号其他的更多的使用方法可以从MDN上面进行查看学习!

2024-05-16 23:57:04 238

原创 国际化日期(inti)

我们可以使用国际化API自动的格式化数字或者日期,并且格式化日期或数字的时候是按照各个国家的习惯来进行格式化的,非常的简单;● 再次回到我们的应用程序,我们给每个用户中定义了国家码,要实现每个人登录按照他国家的习惯来显示时间。比如说这是按照中国的习惯来进行格式化,我们习惯按照年月日时分秒来排列时间。● 我们也可以直在浏览器中自动的获取你的地区,无需手动的去指定地区。大家也可以根据下面的文档详细的学习这个国际化API。● 除了这些,存取款的时间也需要根据用户国家改变。

2024-05-15 22:02:26 298

原创 JavaScript中带日期的操作

当我们把日期转换为Number类型的时候,就会变成时间戳(毫秒)● 所以我们就可以利用时间戳去做点东西,例如你的女朋友给你两个时间,一个时间是第一次约会的时间,第二个时间是第二次约会的时间,问你第一次约会和第二次约会间隔多少天?但是为了防止出现负数,我们还是给加上绝对值。

2024-05-14 21:31:29 434

原创 向银行家应用程序添加日期

● 首先我们将下面图片上的时间更换成现在的时间${${${${${● 但是一般情况下,我们更喜欢能看到04/05这样的表达方式${getDate${getMonth1${getHours${getMinutes${${${${${注:padStart后面有两个参数,第一个参数就是必须为几位数,不够的用第二个参数补齐;

2024-05-13 22:33:19 379

原创 JavaScript创建日期

● 将年转换为毫秒(创建了一个表示从1970年1月1日午夜(UTC时间)起经过3天的毫秒数)注:在JavaScript中月份是从0开始的,所以上面显示是六月份。我们知道5月只有30天,所以往后延两天,输出的是6月2日。● 直接按照年、月、日、时、分、秒输入,以逗号隔开。● 我们也可以让时间以一种良好的方式输出。● 如果日超出了一个月的天数,往后延。● 以时间戳(毫秒数)的方式输出。● 我们也可以修改日期中的年份。● 直接输入月、日、年、时间。● 获取日期中的年月时分秒。● Unix创建的时间。

2024-05-11 22:06:29 302 1

原创 JavaScript使用 BigInt

在 JavaScript 中,最大的安全整数是 2 的 53 次方减 1,即 Number.MAX_SAFE_INTEGER,其值为 9007199254740991。这是因为 JavaScript 中使用双精度浮点数表示数字,双精度浮点数的符号位占 1 位,指数位占 11 位,尾数位占 52 位,因此能够准确表示的整数范围是有限的。超过这个范围的整数可能会失去精度。● 可以看到,超过这个精度,整数的精度就会丢失,可能会出现一些问题。

2024-05-10 20:09:51 214 1

原创 JavaScript数字分隔符

● 如果现在我们用一个很大的数字,例如2300000000,这样真的不便于我们进行阅读,我们希望用千位分隔符来隔开它,例如230,000,000;这好像行不通,JavaScript会自动的忽略掉这个数字中的分隔符;● 除此之外, 最好不要在数字中添加上面的分隔符,有时候会出错。● 就目前而言,我们可以使用API的方式来实现我们上述的需求。

2024-05-08 21:20:11 320 1

原创 JavaScript余数运算符

● 我们可以利用这个特性来判断一个数是奇数还是偶数${${

2024-05-07 20:36:28 189 1

原创 JavaScript中Math函数与舍入

● 使用Math.trunc()方法只是简单的去除小数部分,这里也有其他四舍五入的方法。● 页面的贷款功能实际上一般情况下不会出现小数部分的,我们来通过四舍五入来解决。● 接下来,我们将所有的值都编程两位小数。● 生成一个给定范围内的随机数。

2024-05-06 19:29:21 273

原创 JavaScript转换和校验数字

● 除了这些,也可以解析浮点数。但是这种解析必须开头是数字。● 判断一个数值是不是数字。

2024-04-30 21:57:01 129 1

原创 JavaScript代码挑战#4

/ 编程挑战 #4/* 朱莉亚和凯特仍在研究狗,这次她们研究的是狗是否吃得太多或太少。吃得太多意味着狗当前的食物份量比推荐份量大,吃得太少则相反。吃得适量意味着狗当前的食物份量在推荐份量的正负 10% 的范围内(参见提示)。祝你好运😀 */

2024-04-29 22:09:05 975 2

原创 JavaScript数组方法练习

注: ++count不要写成了count++,很好理解,++count是先运算后赋值,而count++先赋值后运算!● 将一段话的首字母转换为大写字母,其他都是小写,但是请注意,有一些字符不需要进行转换。● 计算所有账号中大于1000存款的有多少笔?接着我们来改进一下上面的代码。● 分别计算存款和取款之和。可以将计数的代码改进一下。

2024-04-28 21:50:00 114 1

原创 总结-要使用哪种数组方法

● 从原始数组中计算得出。● 将原始内容添加到其他。● 使用条件进行过滤。● 基于分隔符字符串。

2024-04-27 20:42:37 142

原创 JavaScript创建和填充数组的更多方法

● fill方法虽然很好用,但是如果想创建[1,2,3,4,5,6,7]这样的数组的话,还是要使用Array.from方法更为简单。通过map方法去填充整个数组,但是这个并做不到,因为map方法只能有有值的情况进行替换,未定义的无法替换。● fill方法和slice方法类似,我们也可以传入参数,让他知道替换数组中的哪些值。● 首先Array.from方法也可以简答的填充数组,和fill类似。● 我们之前创建数组的方式都是手动去创建去一个数据,例如。● 当然,我们也可以生成我们1-7的那种数组。

2024-04-26 21:53:57 629 3

原创 (八)小案例银行家应用程序-排序-数组排序

之后我们写一个一个movs变量,如果sort值为ture的话,对数据进行渐层拷贝,防止对原始数据产生影响,,然后再对拷贝后的数据进行一个降序排序,如果sort为false的话就直接使用未排序的movments数组;● 这个通过点击事件使用,来修改sort的值来进行排序,但是当我们再次点击sort按钮时,并不会回复数组的排序,还是进行从小到大排序,这个事情就需要我们来设置一个状态变量。因为首先设置为false,点击时候,进行取反,就是true,就会继续排序,然后通过sorted =!

2024-04-25 20:39:09 406

原创 flat和flatMap方法

flatMap() 方法是 JavaScript 数组的一个方法,它结合了 map() 和 flat() 两个方法的功能。flat() 方法是 JavaScript 数组的一个方法,用于将多维数组(嵌套数组)转换为一维数组。○ 当然之前我们讲过方法链条,这些都可以用方法链来简化代码量。○ 然后我们再通过flat方法将其合并未一个数组。○ 然后通过reduce方法进行累计。○ 我们还可以设置flat的深度。

2024-04-24 20:42:20 148

原创 (七)小案例银行家应用程序-申请贷款-some方法和every方法

● 而some方法只要达成某一个条件就会返回true,否则就返回flase。只要数组中存在-130这个值,就会返回true,否则就会返回flase。every方法需要所有数组都满足条件才返回true,否则返回flase。● 我们现在利用some方法去实现应用程序中申请贷款的功能。● 我们先回顾一下includes方法。

2024-04-23 21:17:35 262

原创 (六)小案例银行家应用程序-删除账号-findindex方法

● 当用户登录成功之后,可以在下方输入自己的用户名和密码,然后提交,接着用户就会被删除,用户就无法登录了。● 之后我们应该清楚UI,并将输入框内容清空。之后删除的用户将无法登录;

2024-04-22 20:27:28 298

原创 (五)小案例银行家应用程序-实现转账

因此,在btnTransfer的事件监听器中,无法访问到balance,导致条件判断中的currentAccount.balance始终为undefined,从而影响了if条件的判断结果。修改后的代码balance是赋值给了账户对象(acc)的balance属性,而acc是calcDisplayBalance函数的参数,在函数外部定义的。● 我们获取到用户输入钱的值和收款方之后,我们还要去判断用户输入值是否大于0,当前转帐房的余额是否大于用户输入值,用户输入的账户名是否存在,等等。

2024-04-21 13:01:27 270

原创 (四)小案例银行家应用程序-实现登录功能

● 之后我们在显示用户的账号变化、总余额,取钱数,存钱数,利息啥的调用一下,之前函数都写过了,调用该一下即可。● 但是不知道小伙伴记不记得,当时我们写计算利息的时候,所有账号的利息都是1.2,但是实际每个账号的利率都。未登录下面的页面是看不到的,然后通过输入用户名和pin来实现登录,之后才能看到用户的银行数据;● 现在用户登录逻辑出来了,我们只需要在用户正确输入用户名和密码之后显示UI和欢迎信息就可以了。● 但是又强迫症患者还可以看到,有些浏览器虽然输入框清空了,但是还是有光标。

2024-04-18 21:40:35 207

原创 find方法

看上去好像find方法和filter方法类似,只不过find方法只会返回数组第一个符合条件的元素;其次filter方法会返回一个新的数组,而find方法只会返回元素本身;find() 方法用于在数组中查找符合条件的第一个元素,并返回该元素。如果找到匹配的元素,则返回该元素的值;如果未找到匹配的元素,则返回 undefined。● 除此之外,使用find方法也可以去获取你想要的账户名。● 当然上述的方法也可以使用for of来实现。

2024-04-17 21:47:48 157

原创 JavaScript代码挑战3

重写上一个挑战中的 "calcAverageHumanAge "函数,但这次改为箭头函数,并使用链式连接!测试数据 1: [5, 2, 4, 1, 15, 8, 3] 测试数据 2: [16, 6, 10, 5, 6, 1测试数据 2:[16,6,10,5,6,1,4]祝你好运。

2024-04-16 11:32:26 330

原创 JavaScript方法链的魔力

const calcDisplaySummary = function (movements) { //创建一个函数,接受一个数组参数。● 但是如果存款的每一笔利息如果小于1的话,就会被银行给过滤掉,所以我们还需要在利息的函数中添加一个过滤条件。● 上图显示的是用户的存款数,我们使用方法链的方式去实现它。● 按照上面的方法,我们可以继续我们的银行家应用程序了。● 同样的操作,我们计算除取款和银行的利息。

2024-04-15 13:23:43 574

原创 JavaScript代码挑战

让我们回到朱莉娅和凯特关于狗的研究。这次,他们想把狗的年龄转换成人的年龄,并计算出研究中狗的平均年龄。

2024-04-13 22:52:55 266

原创 reduce方法

● 例如上述这个列表存储了一个用户每次取钱和存钱的一个过程,我们要将这个数组中所有的数组加起来,来了解他的余额到底有多少钱,这就需要用到reduce方法。● 累加器(accumulator):累加器是reduce函数的第一个参数,它是上一次回调函数的返回值,或者是初始值(如果没有提供初始值的话)。● 当前索引(current index):当前正在处理的数组元素的索引。● 当前元素(current element):当前正在处理的数组元素。● 上面的reduce方法我们也可以使用箭头函数的方式来简化代码。

2024-04-12 09:28:36 431

原创 filter方法

● 当然,如果没有这个数组方法的话,我们只能使用for循环来执行上述操作。顾名思义,filter方法是过滤用的,过滤一定的条件下;

2024-04-11 09:21:41 206

原创 (三)小案例银行家应用程序-计算账户所有者

● 但是这个只能将一个名字生成出来,为了方便,我们将这个功能写成一个函数,将名字传入的话,就能实现还能生成用户名。● 但是现在我们只能一个一个传参数,现在我们想要传入多个账号来生成用户名。● 我们以上述的这个账号来举例子,这个用户名就是缩写stw。● 为了精简代码,我们将上述代码改写为箭头函数。

2024-04-10 09:59:33 404

原创 map方法

● 为了简化代码,我们可以将map方法中的回调函数改写为箭头函数。例如我们将上述的钱转换一种货币形式,例如汇率是1.1。● 我们还可以进一步简化代码,使用三元运算符。

2024-04-09 16:11:30 307

原创 数据转换_映射、过滤、缩减简述

后面的文章会对这三种方法进行详细的解释已经案例、使用方法的展示!● filter 方法用于从数组中筛选出符合指定条件的元素,并返回这些元素组成的新数组。● map 方法用于对数组中的每个元素执行指定的操作,并返回操作后的结果组成的新数组。● 它可以接受一个初始值,并对数组中的每个元素和上一次的累积值执行指定的操作。● reduce 方法对数组中的元素进行累积计算,最终得到一个值。● 它也不会改变原始数组,而是返回一个新的数组。● 它不会改变原始数组,而是返回一个新的数组。

2024-04-08 13:56:54 176

原创 JavaScript代码小挑战

朱莉娅和凯特正在做一项关于狗的研究。于是,她们分别询问了 5 位狗主人他们的狗的年龄,并将数据存储到一个数组中(每人一个数组)。目前,她们只想知道一只狗是成年狗还是小狗。如果狗的年龄至少为 3 岁,那么它就是成年狗;如果狗的年龄小于 3 岁,那么它就是小狗。

2024-04-07 16:00:15 1362

原创 (二)小案例银行家应用程序-创建DOM元素

insertAdjacentHTML(‘afterbegin’, html) 的含义是将指定的 HTML 字符串 html 插入到 containerMovements 元素的开头部分(即作为其第一个子元素),而不会替换原有的内容。● 上图的数据很明显是从我们账户数组中拿到了,我们刚刚学习了forEach,所以我们使用forEach来创建我们的DOM元素;● ‘afterbegin’:在元素内部的开头部分插入。● ‘beforeend’:在元素内部的结尾部分插入。● ‘afterend’:在元素之后插入。

2024-04-06 22:38:55 181

原创 (一)小案例银行家应用程序-介绍

● 在此之前,我们要将我们所有需要的元素存储到变量中,方便我们后续使用。

2024-04-05 21:36:28 346

原创 forEach用于Maps和集合

● forEach同样适用于集合。使用forEach循环Maps。● 首先我们构造一个Maps。

2024-04-02 14:34:05 378

原创 循环数组_forEach

for…of 循环:○ for…of 是一种 ES6 引入的迭代器,用于遍历可迭代对象(如数组、字符串、Map、Set 等)。○ 可以直接访问数组元素的值,而不需要索引。○ 不能中途跳出循环(除非使用 break 或 return),会一直遍历到数组的末尾。forEach 方法:○ forEach 是数组的原生方法,用于遍历数组中的每个元素,并对每个元素执行提供的回调函数。○ 无法中途跳出循环,会遍历整个数组。break或者return也无法打断。

2024-03-29 09:00:00 488

原创 新的at方法

或者也可以使用slice方法去获取一个新的数组,再从新的数组中去除数组中的数据。● 我们如果想从数组中取出一个字的话,传统的方式我们可以这么写。● 但是使用at方法就会使得更加容易的获取数组中最后一个数据。● 现在我们可以用一种比较新的方式去写。

2024-03-28 09:42:29 139

思科、华为、H3C命令对照表和IEEE802详解.xls

思科、华为、H3C命令对照表以及IEEE802详解

2021-05-10

MyPower S3120系列交换机配置手册V5.0.chm

MyPower S3120系列交换机配置手册V5.0

2021-05-09

MyPower S3120系列交换机命令手册V5.0.chm

MyPower S3120系列交换机命令手册V5.0

2021-05-09

PDF转换工具PDF转换工具.zip

PDF转换工具PDF转换工具

2021-04-25

VMS3000控制软件.zip

多屏拼接控制器软件

2021-04-24

批量配置脚本命令软件.zip

适合网络工程师批量生产交换机命令

2021-04-23

文本比较工具TextDiff.zip

文本比较工具TextDiff

2021-04-22

长截图工具FSCapture.zip

长截图工具FSCapture

2021-04-22

深信服自检工具.zip

深信服设备自检工具

2021-04-20

深信服升级工具.zip

深信服设备升级工具

2021-04-20

adt-bundle-windows-x86_64-20140321.zip

安卓文档,内含eclipse,sdk等

2021-04-19

haxm-windows.zip

haxm-windows

2021-04-19

锐捷网络光模块参数.xlsx

锐捷光模块参数大全,超级详细

2021-04-19

【锐捷交换机】VSU功能应用部署指导手册8-1.chm

【锐捷交换机】VSU功能应用部署指导手册8-1

2021-04-19

云课堂解决方案产品一本通(V5.4).chm

锐捷云课堂解决方案产品一本通

2021-04-19

云办公融合版解决方案实施一本通(V3.0).chm

锐捷云办公融合版解决方案实施一本通

2021-04-19

锐捷智慧云课堂实施部署一本通(V1.01).chm

锐捷智慧云课堂实施部署一本通

2021-04-19

QS-3108-R6-PD32_Driver_Windows_6.708.07.00.zip

锐捷服务器Raid卡(LSI 2308和3108)驱动windows

2021-04-19

LSI 2308 mpt_SAS2_Windows7_Windows_Server_2008_R2_P20.zip

锐捷服务器Raid卡(LSI 2308和3108)驱动windows

2021-04-19

RG-UDS1022和2000系列服务器用户手册V1.0.pdf

锐捷RG-UDS1022和2000系列服务器用户手册V1.0

2021-04-19

RCLD-0114 RG-JCOS云管理平台产品日常维护和问题排查(含UDS硬件组件).pptx

锐捷云管理平台RCLD-0114 RG-JCOS云管理平台产品日常维护和问题排查(含UDS硬件组件)

2021-04-19

RCLD-0113 RG-JCOS云管理平台产品常用功能配置(含UDS硬件组件).pptx

锐捷云管理平台RCLD-0113 RG-JCOS云管理平台产品常用功能配置(含UDS硬件组件)

2021-04-19

RCLD-0111 RG-JCOS云管理平台产品介绍(含UDS硬件组件).pptx

锐捷云管理平台RCLD-0111 RG-JCOS云管理平台产品介绍(含UDS硬件组件)

2021-04-19

锐捷云课堂解决方案部署运维文档集锦.chm

锐捷云课堂解决方案部署运维文档集锦

2021-04-15

锐捷WLAN产品初阶培训(V3.0).pdf

锐捷WLAN产品初阶培训(V3.0)

2021-04-14

WLAN体系基本知识介绍.pdf

WLAN体系基本知识介绍

2021-04-14

RG-WS6008无线控制器硬件安装手册(V1.01).pdf

锐捷RG-WS6008无线控制器硬件安装手册(V1.01)

2021-04-14

【必读】CHM文件打开显示空白处理办法.docx

CHM文件打开显示空白处理办法

2021-04-14

RG-WLAN产品一本通V5.0.chm

锐捷无线RG-WLAN产品一本通V5.0

2021-04-14

RG-AP系列无线接入点AP_RGOS11.1(5)B9版本Web管理手册(V2.0).pdf

锐捷无线RG-AP系列无线接入点AP_RGOS11.1(5)B9版本Web管理手册(V2.0)

2021-04-14

RG-AP系列无线接入点AP_RGOS11.1(5)B8P3版本配置手册(V2.0).pdf

锐捷无线RG-AP系列无线接入点AP_RGOS11.1(5)B8P3版本配置手册(V2.0)

2021-04-14

RG-AP系列无线接入点AP_RGOS11.1(5)B8P3版本命令手册(V1.0).pdf

锐捷无线RG-AP系列无线接入点AP_RGOS11.1(5)B8P3版本命令手册(V1.0)

2021-04-14

RG-AP系列无线接入点AP_RGOS11.1(5)B8P3版本Web管理手册(V1.0).pdf

锐捷RG-AP系列无线接入点AP_RGOS11.1(5)B8P3版本Web管理手册(V1.0)

2021-04-14

RG-AP520(W2)无线接入点硬件安装手册(V1.01).pdf

锐捷RG-AP520(W2)无线接入点硬件安装手册(V1.01)

2021-04-14

RG-AC系列无线控制器AC_RGOS11.1(5)B8P3版本命令手册(V2.0).pdf

锐捷RG-AC系列无线控制器AC_RGOS11.1(5)B8P3版本命令手册(V2.0)

2021-04-14

RG-AC系列无线控制器AC_RGOS11.1(5)B8P3版本Web管理手册(V1.0).pdf

锐捷RG-AC系列无线控制器AC_RGOS11.1(5)B8P3版本Web管理手册(V1.0)

2021-04-14

RG-S8600系列交换机硬件安装手册(V1.82).pdf

RG-S8600系列交换机硬件安装手册(V1.82)

2021-04-14

RG-S6000E系列交换机硬件安装手册(V1.3).pdf

RG-S6000E系列交换机硬件安装手册(V1.3)

2021-04-14

RG-S6000E系列交换机RGOS11.4(1)B2P3版本WEB管理手册(V1.0).pdf

锐捷RG-S6000E系列交换机RGOS11.4(1)B2P3版本WEB管理手册(V1.0)

2021-04-14

RG-S6000E系列交换机RGOS 11.4(1)B2P3版本命令手册(V1.0).pdf

锐捷RG-S6000E系列交换机RGOS 11.4(1)B2P3版本命令手册(V1.0)

2021-04-14

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除