项目中常用到的一些方法整理
程序员文章站
2022-07-01 23:44:43
1、判断当前浏览器类型 2、判断字符串中是否包含中文 3、判定对象是否为空 4、将数组中的id组成字符串,用@连接 5、使用el tooltip组件 javascript getTableBody: function (tab) { if (!tab || tab.name != 'nav1' && ......
1、判断当前浏览器类型
function isbrower(){ var ua = navigator.useragent.tolowercase(); var ismiscro = ua.indexof("micromessenger")>-1;//微信浏览器 var ischrome = ua.indexof('chrome')>-1 && ua.indexof('safari')>-1; //谷歌浏览器 var issafari = ua.indexof('safari')>-1 && ua.indexof('chrome')==-1; //safari浏览器 var isfirefox = ua.indexof('firefox')> -1; //火狐浏览器 var isopera = ua.indexof('opera')> -1; //opera浏览器 var isie = ua.indexof("compatible") > -1 && ua.indexof("msie") > -1 && !ua.indexof("opera") > -1; //ie浏览器 }
2、判断字符串中是否包含中文
function ishaschinese(str){ var reg = new regexp("[\\u4e00-\\u9fff]","g"); return reg.test(str); }
3、判定对象是否为空
function isnull(data){ return ( (data == "" || data == "undefined" || data == undefined) ? true :false); }
4、将数组中的id组成字符串,用@连接
strids = item.data.map(function(ditem){ return ditem.tableid }).join("@");
5、使用el-tooltip组件
<span class="text2" @mouseenter="showtooltip($event)" @mouseleave="hiddentooltip($event)">{{item.frequency1}}</span> <el-tooltip ref="texttooltip" effect="light" :content="texttooltipcontent" placement="top-start"></el-tooltip> showtooltip: function (event) { var ev = event || window.event; var eventname = ev.target.classname; if (eventname.indexof('text') != -1) { if (ev.target.offsetwidth < ev.target.scrollwidth) { var tooltip = this.$refs.texttooltip; this.texttooltipcontent = ev.target.innertext; tooltip.referenceelm = ev.target; tooltip.$refs.popper.style.display = 'none'; tooltip.dodestroy(); tooltip.setexpectedstate(true); tooltip.handleshowpopper(); } } }, hiddentooltip: function () { const tooltip = this.$refs.texttooltip; if (tooltip) { tooltip.setexpectedstate(false); tooltip.handleclosepopper(); } }
6、滚动条定位在有颜色显示的位置
gettablebody: function (tab) { if (!tab || tab.name != 'nav1' && tab.name != 'nav3') { var _this = this; settimeout(function () { _this.curtopheight.foreach(function (e, index) { var eltable = document.getelementsbyclassname('el-table__body-wrapper')[index]; if (eltable) { var td = eltable.getelementsbyclassname('cell')[0]; var tdwindth = parseint(td.style.width) * e.left; document.getelementsbyclassname('el-table__body-wrapper')[index].scrolltop = e.height; document.getelementsbyclassname('el-table__body-wrapper')[index].scrollleft = tdwindth; } }) }, 1200); } }
//找到表格中带有颜色的数据
findcolortext: function (data) { var height = 24; var left = 0; var _this = this; if (data && data.length) { var stop = true; data.foreach(function (item, index) { if (stop) { var _index = index; for (var i in item) { if (item[i].indexof('color') != -1) { height = _index * height; left = i.replace('column_key', ''); _this.curtopheight.push({ 'height': height, 'left': left }); stop = false; break; } } } }) } },
7、动态设置el-loading-mask的高度
getexception:function(){ var odiv = $('#exceptiondiv')[0]; var pdiv = $('#el-exception-pane')[0]; var divheight = pdiv.offsetheight > odiv.offsetheight ? pdiv.offsetheight : odiv.offsetheight; settimeout(function(){ var mdiv = pdiv.children[1]; mdiv.style.height = divheight +'px'; },1000); }
8、判断字符串的类型
isstring: function (str) { return 'string' == utils.getdatatype(str); }, isarray: function (str) { return 'array' == utils.getdatatype(str); }, isobject: function (str) { return 'object' == utils.getdatatype(str); }, isfunction: function (str) { return 'function' == utils.getdatatype(str); }, isnumber: function (str) { return 'null' !== str + '' && str !== '' && !isnan(str); //'number' == utils.getdatatype(str); }, isdate: function (str) { return 'date' == utils.getdatatype(str); }, isdatestr: function (str) { return utils.datestrcheck(str); //return 'object' == utils.isobject(str) && str instanceof date; }, getdatatype: function (str) { type = object.prototype.tostring.call(str).slice(8, -1); return type; },
slice(8,-1)意思是从第8位开始(包含第8位)到最后一位之前(-1的意思就是最后一位,不包含最后一位);
object.prototype.tostring.call(boj)这个是用来判断数据类型,
如果boj是数字,得出的结果是[object number],从零开始数,第8位就是n,最后一位的前一位就是r,所以取得number;
如果boj是字符串,得出结果是[object string],第8位s,最后一位的前一位g,取得string
9、删除左右两端的空格
trim: function (str) { //删除左右两端的空格 return str.replace(/(^\s*)|(\s*$)/g, ""); }
10、转换成 浏览器兼容的时间格式对象
tranfercompatibledate: function (vdate) { //var vdate = (typeof vdate == 'string' ? vdate.split('.')[0] : vdate); if (utils.isstring(vdate) && utils.isdatestr(vdate)) { vdate = vdate.replace(new regexp(/-/gm), '/'); //将所有的'-'转为'/'即可 解决ie、firefox浏览器下js的new date()的值为invalid date、nan-nan的问题 return new date(vdate); } else if (utils.isstring(vdate)) { //针对这种数据先如此处理 "2017-04-15t10:56:31.958z" return new date(vdate); } else if (utils.isdate(vdate)) { //标准日期格式 sat apr 15 2017 13:54:50 gmt+0800 (中国标准时间) return new date(vdate); } else if (utils.isnumber(vdate) || utils.isobject(vdate)) { try { return new date(vdate); } catch (e) { console.error('传入的对象=' + vdate + '转换成日期对象异常!'); return vdate; } } else { console.error('传入的date=' + vdate + '不是正确的日期格式!'); return; } }
11、查询两个日期间隔天数
datedaygap: function (datestrbegin, datestrend) { if (!datestrbegin || !datestrend) return 0; var date1 = utils.tranfercompatibledate(datestrbegin); var date2 = utils.tranfercompatibledate(datestrend); var s1 = date1.gettime(), s2 = date2.gettime(); var total = (s2 - s1) / 1000; var day = parseint(total / (24 * 60 * 60)); //计算整数天数 return day; },
12、数组去重
getarraynorepeated: function (arr) { if (utils.checkobjtypeisinvalid(arr, 'array')) return arr; var res = []; var json = {}; for (var i = 0; i < arr.length; i++) { if (!json[arr[i]]) { res.push(arr[i]); json[arr[i]] = 1; } } return res; }