javascript最常用的封装方法

1,获取链接上的参数

getQueryString = (name, search) => {
  search = search ||  window.location.search.substr(1) || window.location.hash.split("?")[1];
  let reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
  let r = search.match(reg);
  if (r != null) return  unescape(r[2]); return null;
}

2、将数据导出为excel

function exportExcel(fileName, htmlStr) {
  if (!htmlStr) htmlStr = document.getElementsByClassName('tableWrapper')[0].outerHTML
  // 使用 outerHTML 属性获取整个 table 元素的 HTML 代码(包括<table>标签),
  // 然后包装成一个完整的HTML文档,设置 charset 为 urf-8 以防止中文乱码
  var html = "<html><head><meta charset='utf-8' /></head><body>" + htmlStr + '</body></html>'
  // 实例化一个Blob对象,其构造函数的第一个参数是包含文件内容的数组,第二个参数是包含文件类型属性的对象
  var blob = new Blob([html], {
    type: 'application/vnd.ms-excel'
  })
  var a = document.createElement('a')
  a.style.display = 'none'
  // 利用URL.createObjectURL()方法为 a 元素生成 blob URL
  a.href = URL.createObjectURL(blob)
  // 设置文件名
  a.download = `${fileName}.xls`
  document.body.appendChild(a)
  a.click()
  document.body.removeChild(a)
}

3、计算字符串宽度

function computeWidth(){
  let textBox:any = document.createElement('span');
  textBox.cssText = 'font-size: 18px;'
  textBox.innerText = '文字文字文字'
  document.body.appendChild(textBox);
  let width = textBox.offsetWidth;
  document.body.removeChild(textBox)
  return width+50+'px'
}

4.深拷贝

// 1、递归方式实现
function deepCopy(source,target) {
    for(var key in source){
        if(source.hasOwnProperty(key)){//只拷贝当前对象的属性
            if(source[key] && typeof source[key] == "object"){//如果属性是引用类型的对象
                // //根据原属性的类型决定是数组还是普通对象
                target[key] = Array.isArray(source[key]) ? [] : {};
                deepCopy(source[key],target[key]);//递归调用,完成所有层次的拷贝
            }else{
                target[key] = source[key];
            }
        }
    }
}
deepCopy(p1,p2);
 
// 2、借用JSON对象的parse和stringify
newobj = JSON.parse(JSON.stringify(obj))

5.文本复制

copyText(content) {
            if (!content) {
                console.log('文本不存在')
                return false
            }
            //创建一个input框存放需要复制的文本内容
            let copyUrl = document.createElement('input')
            copyUrl.setAttribute('value', content)
            document.body.appendChild(copyUrl)
            // 判断是在win还是ios
            if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
                let range = document.createRange()
                range.selectNode(copyUrl)
                window.getSelection().addRange(range)
            } else {
                copyUrl.select()
            }
            const isSuccess = document.execCommand('Copy')
            copyUrl.remove()
            return isSuccess
        },

6.判断鼠标坐标是否在元素里面

function mousePositionJudge(dom, e) {
    let oElement = dom
    let x1 = 0
    let y1 = 0
    for (x1 = 0, y1 = 0; oElement; oElement = oElement.offsetParent) {
        x1 += oElement.offsetLeft
        y1 += oElement.offsetTop
    }
    let x2 = x1 + dom.offsetWidth
    let y2 = y1 + dom.offsetHeight
    let x = e.pageX
    let y = e.pageY
    if (x > x1 && x < x2 && y > y1 && y < y2) {
        return true
    } else {
        return false
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值