1.Vue动态绑定ref并获取的方法
绑定语法 :ref="`thumb${item.gspecid}`"
获取语法: this.$refs[`thumb${item.gspecid}`]
2.H5页面获取url参数
//1.0版本
function getUrlParam(name) { //封装方法
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]);
return null; //返回参数值
}
let id = getUrlParam('id') //调用方法,参数为url地址传递参数名
//例子:
url地址为: www.xxxx.com?id=1&
let id = getUrlParam('id')
console.log(id) //输出1
//2.0版本
//上面的代码获取的中文会乱码,故有如下方法。
function getUrlParam(name) { //封装方法
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var l = decodeURI(window.location.search);
var r = l.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
}
3.关于js、css在每次引用之后添加版本号,使其能区分版本:
4.关于HTML的缓存,在中间加入以下代码:
5.百度地图根据标注点位置设置缩放比例
let points = [point1,point2,point3];
let view = map.getViewport(eval(points));
let mapZoom = view.zoom;
let centerPoint = view.center;
map.centerAndZoom(centerPoint, mapZoom);
6 根据key值删除数组对应内容
给array对象增加两个函数:
Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
};
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
执行的时候,直接对应的array对象,array.remove('对应的值');
转载于:https://my.oschina.net/jasonwung/blog/647901
7.删除Vue依赖文件夹
cnpm install -g rimraf
rimraf node_modules
npm i安装依赖缺少node-sass,cnpm安装
cnpm install node-sass@latest
8.JQ弹出层底部滚动问题解决(只注重解决思路,有思路即可)
//点击出现弹出层
$('.toggle').on('click',function(){
this.bodyScroll=window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
$('body').addClass('no-scroll').css({top : -this.bodyScroll});
})
//关闭弹出层时
$('.close').on('click', function() {
$('body').css("top", "").removeClass('no-scroll');
$(window).scrollTop(this.bodyScroll);
})
————————————————
版权声明:本文为CSDN博主「白日有梦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37026254/article/details/98597033
9.微信code静默授权并获取open_id后页面返回上一页死循环跳转解决方案
通过百度查找到相关问题找到如下解决方案: 原文地址传送门
以下是根据文章思路结合自己业务需求更改的代码如下:
function getUrlParam(name) { //封装方法
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]);
return null; //返回参数值
}
let code = getUrlParam('code') //获取页面URL的code参数
let openID = '',
const sessionCode = sessionStorage.getItem('code')
function weChatBind() {
if (!code && !sessionCode) {
// sessionStorage和url链接同时没有code参数时跳转微信授权页获取code
if (/MicroMessenger/.test(window.navigator.userAgent)) {
$.ajax({
url: api_uri1,
type: 'get',
dataType: 'json',
headers: headers,
data: {
params: window.location.search.substr(1)
},
success: function (res) {
if (res.result != 1) {
// 我的项目后端已拼接了微信授权的跳转链接,请求拿到链接用location.replace打开即可
window.location.replace(res.result)
}
},
});
}
}else if(!sessionCode){
/***
此时微信重定向回来该登录页面时url是带有code参数的,
而sessionStorage里面没有code参数,
将URL的code参数存进sessionStorage里面并跳转回上一页
***/
sessionStorage.setItem('code', code)
history.back()
} else {
// 跳转回来时利用sessionStorage里面的code值请求接口拿到微信open_id即可,并可以解决微信授权返回上一页死循环跳转
$.ajax({
url: api_uri2,
type: 'get',
dataType: 'json',
headers: headers,
data: {
'code': sessionCode,
},
success: function(res) {
if(res.errorcode == 0) {
openID = res.result
}
},
});
}
}
10.js获取7天之前的日期或者7天之后的日期(网上摘取的,记录自己使用)
function fun_date(num) {
var date1 = new Date();
//今天时间
var time1 = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" + date1.getDate()
console.log(time1);
var date2 = new Date(date1);
date2.setDate(date1.getDate() + num);
//num是正数表示之后的时间,num负数表示之前的时间,0表示今天
var time2 = date2.getFullYear() + "-" + (date2.getMonth() + 1) + "-" + date2.getDate();
console.log(time2);
return time2;
}
fun_date(7);
11.input文本框实现输入英文时自动触发事件,输入中文时要输入完成后才触发事件
使用quill富文本时遇到的坑,解决思路如下:
以下内容转载于:文章链接,可查看原文,提供解决思路。
需求:
英文(英文输入法): 每输入一个字母都触发一次事件;
中文(拼音输入法): 输入完成后才触发事件,不是每打一个拼音就触发
实现:
$(function(){
var flag = true;
$('#dev_region_search').on('compositionstart',function(){
flag = false;
});
$('#dev_region_search').on('compositionend',function(){
flag = true;
});
$('#dev_region_search').on('input',function(){
setTimeout(function(){
if(flag){
searchRegion();
}
},0);
});
});
思路:
compositionstart: 输入开始时触发
compositionend: 选择字/词完成输入时触发
而直接输英文是不触发compositionstart,compositionend事件的,所以开始的标识flag为true才会走后面的searchRegion()方法,
输入中文的则结合compositionstart,compositionend来判断输入完成情况决定走不走后面的searchRegion()方法.
这里加的延时setTimeout是因为默认情况下input比compostionend先执行了,导致flag标识不准确.
更新于2020-11-3
内容整理与网络,供个人记录方便以后遇到同样问题时的解决问题