
Javascrip
IsQtion
想学Python的前端小虫
展开
-
canvas作图系列——折(曲)线图
折(曲)线图折线图和曲线图最主要的地方就是获取到当前点以及下一个点的坐标值,只要有了这两个值,其他的都不是问题。canvas绘制曲线主要用的的是二次贝塞尔曲线和三次贝塞尔曲线二次贝塞尔曲线ctx.moveTo(20,20) //开始点坐标 ctx.quadraticCurveTo(20,100,200,20); //控制点坐标的xy和结束点坐标的xy三次贝塞尔曲线ctx.moveTo(...原创 2019-10-31 19:15:56 · 810 阅读 · 0 评论 -
canvas作图系列——气泡图
气泡图这里做的气泡图是柱形图的一种变体形式,但是基本思想其实差不多,只不过柱形的高矮换成的半径的大小,当然圆心的坐标也要随之改变,圆心的纵坐标要加上跟半径同比例的缩放系数才能保证圆的底部都在同一条水平线上图一function ybChart(data, index) { var dataMax = 0 for (let i = 0; i < data.length; i++)...原创 2019-10-31 18:45:09 · 1526 阅读 · 0 评论 -
canvas作图系列——柱图
柱图canvas画图最主要的就是把一张图分成各个部分,然后一块一块的去进行绘制,比如柱图,在绘制的过程中就可以分成x轴,x轴的label,y轴,y轴的label,平行于x轴的分割线,以及每个柱体等等和一些细节。柱图的x轴就是等分嘛,有几个数据就等分成几块,y轴就是先得出数据的最大值,然后看你想把这最大值均分成几份嘛,比如把1200分成4份,那y轴就是被均分成四份,每个刻度就是300还是要强...原创 2019-10-31 17:28:30 · 569 阅读 · 0 评论 -
canvas作图系列——仪表盘图
仪表盘图仪表盘其实也是环图的一种,但是比环图多的是一个指针,指针需要根据环图的进度调整位置,而这其中主要用到的就是canvas的旋转,但是注意的是canvas的旋转是以画布原点为旋转中心旋转的,因此,我们需要将旋转中心调整到我们需要的位置,再对画布进行旋转,要记得旋转完成之后,需要逆向旋转并平移复位,不然之后会错位的js有一点需要注意的是,如果其中有一段描边使用了ctx.setLineDa...原创 2019-10-31 16:21:06 · 1164 阅读 · 0 评论 -
canvas作图系列——环图
环图canvas制作圆形所用的方法是ctx.arc(x,y,r,0,Math,PI*2,false)其中的6个参数分别是圆心横坐标,圆心纵坐标,半径,起始角度,结束角度,false顺势针/true逆时针而圆环也是用的这个方法,只不过是ctx.fill()填充,替换成了ctx.stroke()描边,利用描边我们就可以绘制出任何大小及弧度的圆环了,通过ctx.linewidth可以设置描边的...原创 2019-10-31 15:53:03 · 1636 阅读 · 0 评论 -
Vue项目中微信浏览器页面刷新问题
运行在微信浏览器中的Vue项目,当需要用户主动对页面进行刷新时,会遇到如下问题:微信不支持location.reload()方法,在微信浏览器中会失效Vue中的路由跳转是类似于ajax局部刷新,因此使用location.href=‘xxx+时间戳’ 这种方法时,页面不会重载Vue自带的this.$router.go(0)无效history.go(0)无效通过后来的研究和学习,找到了一...原创 2019-04-08 17:18:15 · 5761 阅读 · 0 评论 -
计算最大公约数和最小公倍数
首先,要想计算最大公约数和最小公倍数,我们可以利用分解质因子的方式,获取两个数的所有质因子,而两个数的最大公约数是两个数相同的质因子的乘积,最小公倍数则是两个数的相同质因子的乘积再乘以他们各自特有的质因子。比如24和36这两个数,24的质因子是【2,2,2,3】,32的质因子是【2,2,3,3】。两个数的共同质因子是【2,2,3】,因此他们的最大公约数是2*2*3 = 12,两个数特有的质因子是...原创 2019-08-02 16:15:26 · 548 阅读 · 0 评论 -
计算表达式结果(支持带括号的加减乘除以及乘幂和小数运算)
以(1.22+((3.43+54.54)*8^3*9)-3*(2+4*2-1))/10+9^3这个表达式为例吧。首先先分析一下这个表达式,有括号,括号的优先级最高,其次有乘幂和乘除,应该是先算乘幂再算乘除,最后是加减。我们第一步要做的就是处理一下这个表达式,因为表达式是字符串形式的,因此我们要做的处理就是把数字项和运算符项依次放入一个数组中考虑到数字项有小数的情况,因此在字符转数字的是时候统一...原创 2019-08-02 11:01:25 · 1735 阅读 · 0 评论 -
前端跨容器的元素拖拽功能
之前用过一个vue的插件叫vue-slicksort,专门用来拖动元素的,但是只支持标签内拖拽,跨标签的拖拽暂时还不知道有没有这样的一款插件。自己动手丰衣足食,虽然这个是在vue环境下作的,但逻辑也都是原生js写的,所以vue还是其他什么框架的也都无所谓。html结构<template> <div class="hello"> <div class=...原创 2019-08-20 19:31:19 · 965 阅读 · 0 评论 -
JS一键复制功能
<body><span id="selectable">点击后选中<br />点击后选中<br />点击后选中<br />点击后选中<br /></span><input type="button" onclick="selectText('se原创 2018-11-22 17:19:39 · 1226 阅读 · 0 评论 -
JS 实现网页截屏
要实现这个功能就必须要介绍一款特别好用的插件: html2canvas他的用法也特别傻瓜式只需要两行代码就可以实现网页截屏的功能html2canvas(document.body).then(function(canvas) { document.body.appendChild(canvas);});下面看例子这里我们的body标签高度是3023, 浏览器肯定是已经出现滚动...原创 2018-11-02 16:54:33 · 30828 阅读 · 2 评论 -
移动端页面切换小demo
纯无聊之作, 做着玩的<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable原创 2018-10-31 10:21:18 · 874 阅读 · 0 评论 -
JS中的this指向问题
this,被谁调用就指向谁在全局下的thisconsole.log(this) //这里的this是全局下的this, 因此这个this默认指向的是BOM的顶级对象window在函数中的thisvar fn = function() { console.log(this)}fn() //window这里的this是函数fn里的this,而fn函数是被...原创 2018-09-07 14:57:53 · 311 阅读 · 0 评论 -
JS删除对象中的某一属性(delete)
JS如何删除对象中的某一属性var obj={ name: 'zhagnsan', age: 19 }delete obj.name //truetypeof obj.name //undefined通过delete操作符, 可以实现对对象属性的删除操作, 返回值是布尔可以删除其他东西吗1.变量var name ='zs' //已声明的变量dele...原创 2018-09-06 15:58:44 · 110700 阅读 · 5 评论 -
求数组每列最大值
var arr=[ [1,2,5,9], [4,6,2,8], [2,5,7,4], [3,7,8,1], [0,4,1,2] ]; //创建一个空数组,用来接收每一列最大数所在的行数 var hang=[]; //创建一个数组,用来存...原创 2018-08-16 17:26:31 · 2087 阅读 · 0 评论 -
关于react-router中的Prompt组件学习心得
在最近的react项目中, 遇到了一个需求, 点击图片的时候, 会出现一个大图预览, 其实就是一个遮罩层, 专门用来显示大图的, 但因为是一个APP, 所以难免会有用户点开大图后, 不用正常的关闭按钮关闭大图遮罩层, 而是点击手机的返回键,这样就会造成页面后退, 而不仅仅只是关闭遮罩层了, 所以在此, 我决定使用react-router里的Prompt组件Prompt组件作用该...原创 2018-08-10 13:22:04 · 12123 阅读 · 0 评论 -
将某些正整数分解成若干个连续整数的形式
将某些正整数分解成若干连续整数的形式, 例如15=1+2+3+4+515=6+5+415=7+8某些正数不能分解为连续数的和,例如:16输入: 一个正整数N(0<N<10000)输出:整数N对应的所有分解组合, 按照每个分解中的最小整数从小到大输出,每个分解占一行, 如果没有任何输出, 则输出NONE思路介绍:for 循环遍历从n/2(向上取整)处开始从后往前遍历, 遍...原创 2018-09-27 21:56:48 · 2196 阅读 · 0 评论 -
一个例子理解ES6新增的变量声明let
JavaScript中最常接触的一种变量声明的方式就是var, 我们都知道在JS中存在着预解析, name何为预解析呢, 就是当你在一个作用域中不管在什么位置声明一个变量的时候, 会把他放在JS最开始执行的位置, 也就是我们所说的变量声明提升当然, 函数也有变量声明提升并且优先级要高于变量, 但是我们主要介绍变量. 预解析是一把双刃剑, 有时会方便我们编程人员, 又是又会为我们带来一些麻烦, 而下...原创 2018-10-19 22:08:19 · 384 阅读 · 0 评论 -
几种基本的排序算法总结
准备函数 var arr = [] function swap(arr, a, b) { //交换函数 var temp = arr[a] arr[a] = arr[b] arr[b] = temp } function random_arr (){ //生成随机数组的函数 let long = Math.floor(Math.random()*100+1) for...原创 2018-10-29 13:51:20 · 262 阅读 · 0 评论 -
计算一个只有乘法和加法的算术表达式的值,乘法优先,时间复杂度为O(N)
输入: 一个字符串, 只有0到9,还有和+,保证是合法的.输出:每个数字后, 打印出当前算术表达式的值例子:输入: 1+232+3输出:13244750这个题的大体思路就是, 首先要写一个方法, 这个方法能输出任意一个表达式的结果, 然后, 可以通过循环的方式, 将最终表达式的每一项一个一个拼接起来作为这个方法的入参, 方法的思路就是将这个表达式的每一项分割成为一个数组例如, ...原创 2018-09-20 16:28:05 · 3134 阅读 · 0 评论