js 常用函数集

//常用实用函数

//版本控制判断
function compareVersion(v1, v2) {
  v1 = v1.split('.')
  v2 = v2.split('.')
  const len = Math.max(v1.length, v2.length)

  while (v1.length < len) {
    v1.push('0')
  }
  while (v2.length < len) {
    v2.push('0')
  }

  for (let i = 0; i < len; i++) {
    const num1 = parseInt(v1[i])
    const num2 = parseInt(v2[i])

    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return -1
    }
  }

  return 0
}

compareVersion('1.11.0', '1.9.9') // 1
//h5复制到粘贴板
function copyContentH5(content) {
    var copyDom = document.createElement('div');
    copyDom.innerText=content;
    copyDom.style.position='absolute';
    copyDom.style.top='0px';
    copyDom.style.right='-9999px';
    document.body.appendChild(copyDom);
    //创建选中范围
    var range = document.createRange();
    range.selectNode(copyDom);
    //移除粘贴板中内容
    window.getSelection().removeAllRanges();
    //添加新的内容到粘贴板
    window.getSelection().addRange(range);
    //copy
    var successful = document.execCommand('copy');
    copyDom.parentNode.removeChild(copyDom);
    try{
        var msg = successful ? "successful" : "failed";
    } catch(err){
    }
}
//copyContentH5('需要复制的内容')
//设置时长,进行倒计时
var maxtime = 60 * 60; //一个小时,按秒计算,自己调整!
function CountDown() {
   if (maxtime >= 0) {
      minutes = Math.floor(maxtime / 60);
      seconds = Math.floor(maxtime % 60);
      let msg = "距离结束还有" + minutes + "分" + seconds + "秒";
      document.getElementById("timer").innerHTML = msg;
      --maxtime;
    } else{
        clearInterval(timer); //时间到,结束!
    }
 }
let timer = setInterval("CountDown()", 1000);   
//获取倒计时	 时间戳形式
function getupdateTime() { 
	//时间形式为标准形式 如果不是则转换为
	//new Date(2017,06,06);
	//new Date(“2017/06/06”)
  //到期时间,可由后台传
  var end_time = new Date("2020,12,12").getTime();
  var date = new Date();
  var time = date.getTime();
  //计算时间差并换算
  var lag = (end_time - time)/1000;  //时间戳 的秒数
   var day=parseInt(lag/86400);//获取距离目标时间还有多少天
  	var yu=lag%86400;//余下的天数 的秒数
    //获取剩下的时分秒
    var h=parseInt(yu/3600);
    var m=parseInt(yu%3600/60);
    var s=parseInt(yu%3600%60);
    var ms=(end_time - time)%1000 //如果需要精确到毫秒
	if(ms < 100) {//如果需要精确到毫秒
	ms = "0" + ms;
	}
	if(s < 10) {
	s = "0" + s;
	}
	if(m < 10) {
	m = "0" + m;
	}
	if(h < 10) {
	h = "0" + h;
	}
  //页面显示
  $(".settime").html(day + "天" + h + "时" + m + "分" + s + "秒"+ms+"毫秒");
  
}
//定时器
setInterval("getupdateTime()",1000);  //在全局作用域下
setInterval(getupdateTime, 1000);   //精确到秒
setInterval(getupdateTime, 50);   //精确到毫秒


//获取前几天的函数  前几个月 前几年是相同的道理
function getBeforeDate(n) {
     var n = n;
     var d = new Date();
     var year = d.getFullYear();
     var mon = d.getMonth() + 1;
     var day = d.getDate();
     if(day <= n) {//天数不够==》 前一月
         if(mon > 1) {
             mon = mon - 1;
         } else {
             year = year - 1;
             mon = 12;
         }
     }
     d.setDate(d.getDate() - n);
     year = d.getFullYear();
     mon = d.getMonth() + 1;
     day = d.getDate();
    var s = year + "-" + (mon < 10 ? ('0' + mon) : mon) + "-" + (day < 10 ? ('0' + day) : day);
      return s;
   }
console.log(getBeforeDate(1));//昨天的日期  


//获取当航栏的某个属性值为?  eg:?id=XXX&tit=XXX
function GetQueryString(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=parseInt(GetQueryString("id")) ;
let ispm=GetQueryString("ispm");


//获取返回的src的img路径
function getImgArr(html){
	// let regExp=new RegExp(`(?<=(src="))[^"]*?(?=")`, 'gi');//ios 林宽断言 不支持 和/ /
	// let img=html.match(regExp)
	let reg = new RegExp(`src=[\'\"]?([^\'\"]*)[\'\"]?`,"ig")
	let img=html.match(reg);
	if(img==null){//没有相关img 路径
		return  []
	}else{
		let arrImg=[]
		img.forEach(item=>{
			arrImg.push(item.substr(5).slice(0,-1))	
		})
		return arrImg
	}
}
getImgArr(`<img src="http://..." /><p><img src="http://..." /></p>`)


//获取后台返回的文本 (去除标签)
function getSimpleText(html){
var re1 = new RegExp("<.+?>","g");//匹配html标签的正则表达式,
 let msg = html.replace(/&nbsp;/g, ' ').replace(/&amp;/g, '&')
   .replace(/<\/?[^>]*>/g,'')//过滤html的标签
  .replace(/&lt;/g, '<').replace(/&gt;/g, '>')
return msg;			
}
getSimpleText("<p>unescape() 函数可对通过 escape() 编码的字符串进行解码。</p>")
//长生一个用不重复的10-12位随机数的序列
function createUniqueId(n) {
	var random = function() { // 生成10-12位不等的字符串
		return Number(Math.random().toString().substr(2)).toString(36); // 转换成十六进制
	};
	var arr = [];
	function createId() {
		var num = random();
		var _bool = false;
		arr.forEach(v => {
			if(v === num) _bool = true;
		});
		if(_bool) {
			createId();
		}else {
			arr.push(num);
		}
	}
	var i = 0;
	while(i < n) {
		createId();
		i++;
	}
	return arr;
}
createUniqueId(5)//产生5不同的字符串 数组
//字体大小自适应
function resetWidth() {
	// 兼容ie浏览器 document.body.clientWidth
	var baseWidth = document.documentElement.clientWidth || 			document.body.clientWidth;
	console.log(baseWidth);
	if(baseWidth > 750) baseWidth = 750;
	document.documentElement.style.fontSize = baseWidth / 750 * 100 + 'px'
}
resetWidth();
window.addEventListener('resize', function () {
resetWidth();
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值