JavaScript經常使用函數彙總

/**
 * 顯示精確到天的倒計時
 * @param timeStr 日期字符串,格式:2017年04月30日09時00分11秒
 * @param currDate 當前時間的 Date 對象
 */
export function showCountdownAccurateToDate (timeStr, currDate) {
  const TOTAL_TIME_FOR_SECOND = 1000
  const TOTAL_TIME_FOR_MINUTE = TOTAL_TIME_FOR_SECOND * 60
  const TOTAL_TIME_FOR_HOUR = TOTAL_TIME_FOR_MINUTE * 60
  const TOTAL_TIME_FOR_DAY = TOTAL_TIME_FOR_HOUR * 24
  let time = new Date(timeStr.replace(/[年月]/g, '/').replace(/[日秒]/g, ' ').replace(/[時分秒]/g, ':').substring(0, 19)).getTime()
  let nowTime = currDate.getTime()
  let timeDiff = time - nowTime
  let showStr = []
  if (time - nowTime > 0) {
    let day = parseInt(timeDiff / TOTAL_TIME_FOR_DAY)
    let hour = parseInt((timeDiff - day * TOTAL_TIME_FOR_DAY) / TOTAL_TIME_FOR_HOUR)
    let minute = parseInt((timeDiff - day * TOTAL_TIME_FOR_DAY - hour * TOTAL_TIME_FOR_HOUR) / TOTAL_TIME_FOR_MINUTE)
    let second = parseInt((timeDiff - day * TOTAL_TIME_FOR_DAY - hour * TOTAL_TIME_FOR_HOUR - minute * TOTAL_TIME_FOR_MINUTE) / TOTAL_TIME_FOR_SECOND)
    showStr.push(day + '天')
    showStr.push(hour + '時')
    showStr.push(minute + '分')
    showStr.push(second + '秒')
    return showStr.join('')
  } else {
    return timeStr
  }
}

 

/**
 * 測量文本的寬度,基於 jQuery
 * @function measureTxtWidth
 * @param $source 須要測量文本寬度的 jquery 對象
 * @returns {number} 返回文本的寬度
 */
function measureTxtWidth($source) {
    var txtWidth = null;
    var text = $source.text();
    var $span = $("<span>" + text + "</span>").appendTo("body");
    $span.css({whiteSpace: "nowrap", font: $source.css("font")});
    txtWidth = $span.width();
    $span.remove();
    return txtWidth;
}

 

/**
 * 根據電話號碼獲取位置信息,使用拍拍開放 api
 * @function getPosiByPhoneNo
 * @param phoneNo 電話號碼
 * @param succFunc 調用接口成功的回調函數
 * @returns {undefined}
 * @example 回調函數入參的數據格式以下:
                 {
                   "mobile": "1857*******",
                   "province": "廣東",
                   "isp": "中國聯通",
                   "stock": "1",
                   "amount": "10000",
                   "maxprice": "0",
                   "minprice": "0",
                   "cityname": "深圳"
                 }
 */
function getPosiByPhoneNo(phoneNo, succFunc)
{
    $.ajax({
        url: "http://virtual.paipai.com/extinfo/GetMobileProductInfo",
        type: "get",
        data: {mobile: phoneNo, amount: 10000},
        dataType: "jsonp",
        jsonp: "callname",
        jsonpCallback: "getPositionCallback",
        success: function(data){
            succFunc && succFunc(data);
        },
        error: function(xhr, errorCode){
            console.log("根據手機號獲取歸屬地服務失敗【前端】");
        }
    });
}

 

 

/**
 * 打印日誌
 * @param info 須要打印的數據
 */
function _log(info) {
    var loggerDom = document.querySelector("#logger");
    var loggerTitle = null;
    if(!loggerDom) {
        loggerDom = document.createElement("div");
        loggerDom.id = "logger";
        loggerTitle = document.createElement("p");
        loggerTitle.innerHTML = "日誌標題:";
        loggerTitle.style.cssText = "color:blue;font-weight:bold";
        loggerDom.appendChild(loggerTitle);
        document.querySelector("body").appendChild(loggerDom);
    }
    var pDom = document.createElement("p");
    pDom.innerHTML = new Date().toISOString() + ":<span style='color:red;font-weight:bold;'>" + info + "</span>";
    loggerDom.insertBefore(pDom, loggerDom.childNodes[1]);
}
相關文章
相關標籤/搜索