js經常使用 方法 封裝

 

// 監聽滾動,用於列表頁向下加載---------------------------------
function loadmore(callback) {
    $(window).scroll(function () {
        var scrollTop = $(this).scrollTop(); //滾動條距離頂部的高度
        var scrollHeight = $(document).height(); //當前頁面的總高度
        var clientHeight = $(this).height(); //當前可視的頁面高度
        //距離頂部+當前高度 >=文檔總高度 即表明滑動到底部 
        if (scrollTop + clientHeight >= scrollHeight - 200) {
            callback && callback()
        }
    });
}
// toast弱提示 提示框--------------------------------------
function toast(config) {
    var mask = document.getElementById("toast_mask");
    var func = config.func;
    if (!mask) {
        mask = document.createElement("div");
        mask.id = "toast_mask";
        mask.className = "toast_mask f26";

        mask.innerHTML = '<div class="toast_box" id="toast_box">' +
            '<div class="tips_content" id="toast_info">' + config.msg + '</div>' +
            '</div>';
        document.body.appendChild(mask);
    } else {
        mask.style.display = "flex";
    }
    //延時消失
    setTimeout(() => {
        mask.style.display = "none";
        func && func();
    }, config.duration || 3000)
    //點擊時消失
    mask.onclick = () => {
        mask.style.display = "none"
    }
    document.getElementById("toast_info").innerText = config.msg;
}

 

//過濾數組重複項---------------------------------------------------------------
let getNo_list = () => {
    var arr = [1, 2, 3, 1, 3, 4, 5, 5];
    var resultArr = [];
    for (i = 0; i < arr.length; i++) {
        for (j = 0; j < resultArr.length; j++) {
            if (resultArr[j] == arr[i]) {
                break;
            }
        }
        if (j == resultArr.length) {
            resultArr[resultArr.length] = arr[i];
        }
    }
    console.log(resultArr); //1,2,3,4,5
}

 

 

//數組排序 從小到大---------------------------------------------------------
let list_isBig = (arr) => {
    for (var j = 0; j < arr.length - 1; j++) {
        //兩兩比較,若是前一個比後一個大,則交換位置。
        for (var i = 0; i < arr.length - 1 - j; i++) {
            if (arr[i] > arr[i + 1]) {
                var temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
    }
    return arr
}

 

 

//獲取json長度----------------------------------------------------------
let getJsonObjLength = (jsonObj) => {
    var Length = 0;
    for (var item in jsonObj) {
        Length++;
    }
    return Length;
}

 

 

//傳入一個開始時間('2019','1')返回一個時間戳區間
let computeTime = (year, month) => {
    return [
        // new Date(year, month - 1, 1).getTime(),
        // new Date(year, month, 0).getTime() + (24 * 60 * 60 * 1000 - 1000) 註釋的和非註釋均可用
        new Date(year, month - 1, 1).getTime() / 1000,
        new Date(year, month, 1).getTime() / 1000 - 1
    ]
}

 

 

//傳入時間戳,第二個參數是格式,也可不傳
let parseTime = (time, pattern) => {
    if (!time) {
        return null
    }
    const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
    let date
    if (typeof time === 'object') {
        date = time
    } else {
        if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
            time = parseInt(time)
        }
        if ((typeof time === 'number') && (time.toString().length === 10)) {
            time = time * 1000
        }
        date = new Date(time)
    }
    const formatObj = {
        y: date.getFullYear(),
        m: date.getMonth() + 1,
        d: date.getDate(),
        h: date.getHours(),
        i: date.getMinutes(),
        s: date.getSeconds(),
        a: date.getDay()
    }
    const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
        let value = formatObj[key]
        // Note: getDay() returns 0 on Sunday
        if (key === 'a') {
            return ['日', '一', '二', '三', '四', '五', '六'][value]
        }
        if (result.length > 0 && value < 10) {
            value = '0' + value
        }
        return value || 0
    })
    return time_str
}

 

// 複製
function copy(item) {
    if (isIosorAn() == "ios") {
        is_iosCopy(item)
    } else {
        var text = document.createElement("input");
        text.id = "sharecopy";
        text.value = item;
        text.style.position = "fixed";
        text.style.top = "-10000px";
        text.readOnly = false;
        document.body.appendChild(text);
        text.select();
        var copys = document.execCommand("copy");
        text.blur();
        text.remove();
        if (copys) {
            toast({
                msg: "複製成功"
            })
        } else {
            toast({
                msg: "複製失敗"
            })
        }
    }
}

function is_iosCopy(item) {
    var el = document.createElement('input');
    el.value = item
    el.style.opacity = '0';
    document.body.prepend(el);
    el.type = "text"
    var editable = el.contentEditable;
    var readOnly = el.readOnly;
    el.contentEditable = true;
    el.readOnly = false;
    var range = document.createRange();
    range.selectNodeContents(el);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
    el.setSelectionRange(0, 999999);
    el.contentEditable = editable;
    el.readOnly = readOnly;
    var ret = document.execCommand('copy');
    el.blur();
    el.remove()
    if (ret) {
        toast({
            msg: "複製成功"
        })
    } else {
        toast({
            msg: "複製失敗"
        })
    }
}


function isIosorAn() {
    var equipmentType = "";
    var agent = navigator.userAgent.toLowerCase();
    var android = agent.indexOf("android");
    var iphone = agent.indexOf("iphone");
    var ipad = agent.indexOf("ipad");
    if (android != -1) {
        equipmentType = "android";
    }
    if (iphone != -1 || ipad != -1) {
        equipmentType = "ios";
    }
    return equipmentType;
}
相關文章
相關標籤/搜索