实用小工具不定期合集(textarea 高度自适应、自动计算Y轴刻度、json转table)
1.textarea高度自适应
这个非常有用,但是网上的解决方案都不尽人意,话不多说,上代码。
function auto (elem) {
var minHeight = 30
var change = function () {
elem.style.height = minHeight + 'px'
elem.style.overflowY = 'hidden'
if (elem.scrollHeight > minHeight) {
elem.style.height = elem.scrollHeight + 'px'
}
}
elem.addEventListener("input", change, false)
elem.addEventListener("focus", change, false)
elem.addEventListener("propertychange", change, false)
change()
}
思路很简单,根据内容高度不断重置textarea高度,绑定input, focus, propertychange事件
2.自动计算Y轴高度,先放算法参考链接:https://stackoverflow.com/questions/326679/choosing-an-attractive-linear-scale-for-a-graphs-y-axis
意思就是给定几个数值,要能在y轴上较好的展示(算出上下限和区间值)
function scaleNumber (max, min, i) {
let unround = (max - min) / i // 等分刻度
let x = Math.ceil(Math.log10(unround))
let pow10x = Math.pow(10, x)
let arr = [0.1, 0.2, 0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.75, 0.8, 0.9, 1]
for (let item of arr) {
if (unround / pow10x <= item) {
var range = item * pow10x
break
}
}
console.log(range)
min = range * Math.floor(min / range)
max = range * Math.ceil(max / range)
return [max, min]
}
参数i表示需要分几段
3.json转table,这个比较简单但是也比较实用,就记录下来:
function json2html (str) {
var reg = /\[{2}((?!\]\]).)+\]{2}/g
var jsonstrarr = []
var htmlstrarr = []
var result
while((result = reg.exec(str)) !== null) {
// console.log(result)
jsonstrarr.push(result[0])
}
console.log(jsonstrarr)
for (let item of jsonstrarr) {
let obj = JSON.parse(item)
let htmlstr = `<table cellpadding="0" border="1">`
for (let i of obj) {
htmlstr += '<tr>'
for (let j of i) {
htmlstr += `<td colspan="${j.col}" rowspan="${j.row}">${j.value}</td>`
}
htmlstr += '</tr>'
}
htmlstr += '</table>'
htmlstrarr.push(htmlstr)
}
let newstr = str
for (let index in jsonstrarr) {
newstr = newstr.replace(jsonstrarr[index], htmlstrarr[index])
}
return newstr
}
实用小工具不定期合集(textarea 高度自适应、自动计算Y轴刻度、json转table)的更多相关文章
- Python趣味实用小工具
代码地址如下:http://www.demodashi.com/demo/12918.html python 趣味实用小工具 概述 用python实现的三个趣味实用小工具: 图片转Execl工具 , ...
- ANDROID开发实用小工具
分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...
- 批量下载网站图片的Python实用小工具(下)
引子 在 批量下载网站图片的Python实用小工具 一文中,讲解了开发一个Python小工具来实现网站图片的并发批量拉取.不过那个工具仅限于特定网站的特定规则,本文将基于其代码实现,开发一个更加通用的 ...
- 微信小程序解决方案合集
微信小程序解决方案合集:http://www.wxapp-union.com/special/solution.html 跳坑系列:http://www.wxapp-union.com/forum.p ...
- (转)超全整理!Linux性能分析工具汇总合集
超全整理!Linux性能分析工具汇总合集 原文:http://rdc.hundsun.com/portal/article/731.html 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望, ...
- 实用小工具推荐 OpenWrite
[实用小工具推荐]给技术同学们推荐一款比较好用的工具,可以实现一稿多发,主流的技术渠道基本涵盖了:https://www.openwrite.cn/ 因为工作的关系,认识了很多做技术公众号的小伙伴,同 ...
- 实用小工具:screen
实用小工具:screen 首先,吹爆screen screen,实现了不间断的会话服务,通过SSH连接至远程服务器,当使用了screen开启的会话,不会因为你断开SSH而中断在远程服务器上运行的命令. ...
- textarea高度自适应自动展开
在使用之前,推荐两个比较好的事件,分别是oninput和onpropertychange,IE9以下不兼容oninput.在textarea发生变化时,可以通过监听这两个事件来触发你需要的功能. te ...
- Xcode 4.1实用小工具:模拟网络连接和带宽
暂无评论 适用于Mac OS X Lion的开发套件Xcode 4.1中,有个新鲜的小工具叫做Network Link Conditioner(网络连接调节器),是一款具有高度可定制性的辅助工具,让用 ...
随机推荐
- uoj455 【UER #8】雪灾与外卖
http://uoj.ac/problem/455 题解: https://blog.csdn.net/litble/article/details/88410435 https://www.mina ...
- Scala_Load csv data to hive via spark2.1_via pass parameters
prepare csv: # vim /tmp/cars.csv year,make,model,comment,blank ","Tesla","S" ...
- 09.Spring Bean 注册 - BeanDefinitionRegistry
基本概念 BeanDefinitionRegistry ,该类的作用主要是向注册表中注册 BeanDefinition 实例,完成 注册的过程. 它的接口定义如下: public interface ...
- linux下各种格式软件的安装(引用http://blog.csdn.net/zyz511919766/article/details/7574040)
首先介绍两个简单的方式 第一:sudo apt-get install packagename 命令 如果我们知道我们要安装的软件的确切的名称,那么我们可以简单的通过此条命令来获取和安装软件.apt- ...
- Dijkstra算法(求一点到任意一点的最短距离)
思路:先找出最短的一个点,也就是起点,从起点出发,找最短的边,同时标记起点为true(代表已经访问过),访问过的点就不用再访问了,依次下去,保证每一次找到的边都是最短的边 到最后没有边可以更新了就代表 ...
- Spark编程模型(下)
创建Pair RDD 什么是Pair RDD 包含键值对类型的RDD类型被称作Pair RDD: Pair RDD通常用来进行聚合计算: Pair RDD通常由普通RDD做ETL转化而来. Pytho ...
- SpringBoot源码篇:深度分析SpringBoot如何省去web.xml
一.前言 从本博文开始,正式开启Spring及SpringBoot源码分析之旅.这可能是一个漫长的过程,因为本人之前阅读源码都是很片面的,对Spring源码没有一个系统的认识.从本文开始我会持续更新, ...
- redis数据类型--个人常规用法
一.String 1.可以容纳最高512M的value. 2.经常用于通过expire来实现自动过期的一些值,直接通过setex 来. 3.通过incrby的方式,来实现value值得增长. 4.执行 ...
- jQuery 结构的实现思路
前提: 使用 JS 创建对象的最优办法,是 原型模式. step1: 原型模式的基础使用方式 function fn(){} fn.prototype = {} var ...
- Filter过滤器,xml配置与页面不乱码整理
1.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...