首页 | Blogs | 项目合集 | Bilibili↗
←返回 |
创建:2024-06-16 | 最后更新:2024-06-17
Textarea自适应高度
let textarea=document.getElementById('ID');
textarea.addEventListener("input", function() {this.style.height = "inherit";this.style.height = `${this.scrollHeight + 5}px`;});
应用后textarea有文本变化就会自动改变高度来自适应
但是还有CSS要应用来处理细节
textarea {
padding: 0;
overflow-y: hidden;
overflow-x: auto;
box-sizing: border-box;
}
js判断文本行数和逐行读取
String.prototype.lines = function() { return this.split(/\r*\n/); };
String.prototype.lineCount = function() { return this.lines().length; };
新增两种string方法
lines()
返回按行分割的数组lineCount()
返回文本共有多少行
将文本另存为
function saveTxtAs(texts,filename) {//保存文本文件
var hidden_a = document.createElement('a');
hidden_a.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(texts));
hidden_a.setAttribute('download', filename);
document.body.appendChild(hidden_a); hidden_a.click();
hidden_a.remove();return;
}; //不推荐使用URLencode实现,还需要考虑编码问题
这里定义了一个函数saveTxtAs(texts,filename)
texts
具体要另存为的文本filename
文件名
下方是base64版实现(推荐)
function saveTxtAs(texts,filename) {//保存文本文件
var hidden_a = document.createElement('a');
hidden_a.setAttribute('href', 'data:text/plain;base64,'+window.btoa(unescape(encodeURIComponent(texts))));
hidden_a.setAttribute('download', filename);
document.body.appendChild(hidden_a); hidden_a.click();
hidden_a.remove();return;
};//把编码留给客户端自动识别就行了嘛
UTF-8与base64转换
// 使用utf-8字符集进行base64编码
function utoa(str) {
return window.btoa(unescape(encodeURIComponent(str)));
}
// 使用utf-8字符集解析base64字符串
function atou(str) {
return decodeURIComponent(escape(window.atob(str)));
}
这是一种实现方式,具体是把utf里面的特殊字符全部转换为%形式
而atob()
与btoa()
可以编码%
Cookies操作
function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toGMTString(); document.cookie = cname + "=" + cvalue + "; " + expires };
function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i].trim(); if (c.indexOf(name) == 0) return c.substring(name.length, c.length) }; return null };
分别定义写cookie和getcookie
删除就把exdays
设成比现在早的时间(比如1900年1月1日)
需注意Google浏览器没法为本地文件设置Cookies,而Edge可以
获取参数、删除参数
function getQueryString(name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); let r = window.location.search.substr(1).match(reg); if (r != null) { return unescape(r[2]); }; return null; };
String.prototype.removeQuery = function(name) { if (name == undefined) {return this.replace(/[?&].*=[^&]*&?/g, "");} else {return this.replace(`/[?&]` + name + `=[^&]*&?/g`, "");}; };
查询参数信息,没有返回null
移除参数,没传递目标参数则为全部参数
(那你为啥不用window.location)
真sleep
function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); };
直接暂停当前流的执行,非异步处理