textContent
与 innerText
属性返回的都是纯文本,不会含有 HTML 标签。它们的主要区别在于:textContent
返回的是所有文本内容(忽略 HTML 标签本身),而且保持源代码里的格式。innerText
则会按照人眼所看到的格式返回。
对于代码里的 <br>
换行,由于 textContent
只管返回文本内容,而 <br>
是个标签,所以 textContent
会完全忽略它。
innerText
则会将 <br>
变成 \n
,因为这符合人眼看到的效果。
JavaScript 中 textContent 和 innerText 的区别
我发现文章里的语法高亮插件自动把一些转义字符给解码了,导致显示的不正确。可以移步知乎查看:
https://zhuanlan.zhihu.com/p/689946202
需求:反转义/解码字符
API 返回的某个字段里是用于渲染到页面上的 HTML 代码,其中可能混杂有转义字符、正常字符、HTML 标签。如下:
// 解码后应为:1,2'<br />3<4 5>
const str = '1,2'<br />3<4 5>'
// 3、4、5 后面的其实都是转义字符,但是高亮插件给自动解码了,所以你看到的是正常的字符
现在有个需求,将其保存到一个 txt 纯文本里,为了可读性,需要将转义字符变成其“真正”的字符,可以称为“反转义”或“解码”。(这里不需要处理 HTML 标签如 <br />
等,原样保留即可)。
下面有 3 个方法,第一个是正确的,后面两个是不符合预期的:
JavaScript 编码(反转义)HTML 转义字符
起因是我在知乎看到了这个问题,提问者列出了 4 个方法: for forEach map reduce,问大家用的最多的是哪个。
巧了,我哪个都不是,我用 for of。看完了那些回答,我才发觉 for of 怎么比我想象中冷门很多呢?难道是因为它相比 for 算是高级的,相比 forEach 之类算是低级的,所以夹在中间不上不下了?但也许正因为如此,我才喜欢用它,因为它既比 for 简洁,又比 forEach 之类强大(例如可以 break,可以循环执行 await)。
我写了个回答详细说明了一下,感兴趣的话可以看看:
https://www.zhihu.com/question/605580848/answer/3443452329
JavaScript 的循环/遍历方法,你用的最多的是哪个?
在 bilibili 的各种视频/直播封面上,以及视频播放页面/直播间内,按 Ctrl+鼠标右键 ,就会在新标签页里打开它的封面图。
脚本安装地址:
https://greasyfork.org/zh-CN/scripts/30714
老东西了,今天更新了一下。
获取bilibili视频的封面图片的用户脚本
如果在 JavaScript 中使用 Math.random().toString(16)
这种方法来生成随机字符串,字符串的长度并不固定。我测试了一些数据,发现最小可能是 9 位。(或许最小是 8 位)
Math.random() 生成随机字符串需要注意长度
假设有一个页面,上面黄色部分是一个浮窗。我们需要用 JavaScript 实现:点击页面其他部分时关闭这个浮窗。
要点在于区分用户点击的是浮窗还是其他部分。
JavaScript 点击页面空白处,关闭浮窗/弹框/菜单
设想一下简单的例子:有字符串 abcd
,我们使用正则表达式 /\w/g
全局匹配它,应该获取到 a
b
c
d
四个字符串。
正则表达式的 exec
方法和字符串的 match
都可以达到这个目的,但使用方式上有差别。
下面的内容只探讨全局匹配模式的情况(也就是正则表达式后面加了 g
标识)。非全局匹配模式,可以基本认为它们没有差别。
JS 中 exec 和 match 进行正则表达式匹配的区别
最近我开始学习使用 TypeScript。先看了看教程,好像很简单的样子,就那些类型嘛,定义好类型就完事了。但是实际使用中却遇到了不少问题,在这里记录一些经验。
Read More →
TypeScript 使用记录
我想修改之前的代码,把 js 变量名转换为驼峰命名风格,如下:
// 原有代码的变量名是下划线方式 let test_name = '' test_name = document.querySelector('.test_name') // 修改成驼峰命名 let testName = ''; testName = document.querySelector('.test_name');
因为要修改的文件内容繁杂,变量名很多,手动修改不能接受,此外我还担心手动替换会影响到不该改的地方(如字符串里),所以我想找一个工具来自动转换,这样就方便多了。
Read More →
Babel 将 js 变量名转换为驼峰命名风格
今天我想让 Eslint 使用 Standard 代码风格来检查 JavaScript 代码,又折腾了许久。
其实弄明白了就简单了,安装这些依赖的 npm 包:
npm install -g standard eslint eslint-config-standard eslint-plugin-standard eslint-plugin-promise eslint-plugin-import eslint-plugin-node
如果不想全局安装,你也可以把 -g 改为 -D 进行本地安装。
安装完之后,在 .eslintrc 配置文件的 extend 规则里添加 standard,如:
{ "extends": ["standard"] }
重启项目,如果 ESlint 没有报错信息,应该就可以使用 Standard 规则检查代码了。
Read More →