JS常用函数汇总

2019PHP高薪工程师学习路线图....>>>

/**
 * 根据电话号码获取位置信息
 * @param phoneNo 电话号码
 * @param succFunc 调用接口成功的回调函数
 *        回调函数入参的数据格式如下:
 *            {
              "mobile": "18576648552",
              "province": "广东",
              "isp": "中国联通",
              "stock": "1",
              "amount": "10000",
              "maxprice": "0",
              "minprice": "0",
              "cityname": "深圳"
            }
 */
function getPositionByPhoneNo(phoneNo, succFunc)
{
    $.ajax({
        url: "http://virtual.paipai.com/extinfo/GetMobileProductInfo",
        type: "post",
        data: {mobile: phoneNo, amount: 10000},
        dataType: "jsonp",
        jsonp: "callname",
        jsonpCallback: "getPhoneNumInfoExtCallback",
        success: function(data){
            if(succFunc)
            {
                succFunc(data);
            }
        },
        error: function(xhr, errorCode){
            console.log("根据手机号获取归属地服务失败【前端】");
            if(succFunc)
            {
                succFunc({});
            }
        }
    });
}
 
/**
 * 将数字金额进行千位分隔
 * @param number 需要分隔的数字
 * @return 返回分割后的数字
 */
function formatFloatToThousand(number) 
{
    number = number.toString();
    var resultArray = [];
    var pointPosi = number.indexOf("."); // 取得小数点的位置
    var int = pointPosi == -1 ? number : number.substring(0, pointPosi); // 取得小数中的整数部分
    var float = pointPosi == -1 ? '' : number.substring(pointPosi + 1, number.length);
    var remainSum = int.length % 3; // 超过 3 的位数
    if(int.length < 3)
    {
        return number;
    }
    if(remainSum == 0)
    {
        resultArray = resultArray.concat(int.match(/\d{3}/g));
    }
    else
    {
        resultArray.push(int.substring(0, remainSum));
        int = int.substring(remainSum);
        resultArray = resultArray.concat(int.match(/\d{3}/g));
    }
    return pointPosi == -1 ? resultArray.join(',') : resultArray.join(',') + '.' + float;
}
 
/**
 * 测量文本的宽度
 * @param $source 需要测量文本宽度的 jquery 对象
 */
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 获取当前位置:
http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js
返回的数据格式如下:
{
  "ret": 1,
  "start": "180.149.132.0",
  "end": "180.149.159.255",
  "country": "中国", // 国家
  "province": "北京", // 省份
  "city": "北京", // 城市
  "district": "",
  "isp": "电信", // 运营商
  "type": "企业",
  "desc": "中国电信集团电信"
}
 
/**
 * 获取地理定位信息,使用腾讯地图进行定位
 * @param getSuccFunc 获取成功的回调函数回调函数
 */
function getGeolocation(getSuccFunc)
{
    var succResult = {}; // 请求位置成功的结果
    var geolocation = new soso.maps.Geolocation();
    var positionParam = {
        locationMode: "CLIENT_IP" // ip定位
    };
    var positionCallback = function(data, status){
        if(status === "OK")
        {
            if(data && data.latLng)
            {
                succResult.latitude = data.latLng.lat; // 纬度
                succResult.longitude = data.latLng.lng; // 经度
            }
        }
        if(getSuccFunc)
        {
            getSuccFunc(succResult);
        }
    };
    geolocation.position(positionParam, positionCallback);
}
 
/**
 * 将数字转换成字符串的通用方法
 * 说明:直接使用 toFixed 方法会进行四舍五入,因此写一个将数字转换为指定小数位数字符串的方法
 * @param sourceData 源数据
 * @param decimalLen 小数的位数
 */
function numberToString(sourceData, decimalLen)
{
    decimalLen = typeof(decimalLen) == undefined ? 0 : decimalLen;
    var result = sourceData + "";
    var integerStr = null; // 整数部分
    var decimalStr = null; // 小数部分
    if(result.indexOf(".") == -1)
    {
        result = Number(result).toFixed(decimalLen);
    }
    else
    {
        integerStr = result.substring(0, result.indexOf(".")); // 整数部分
        decimalStr = /\.\d+/.exec(result); // 小数部分
        decimalStr = Number(decimalStr);
        decimalStr = decimalStr.toPrecision(decimalLen).substr(0, decimalLen + 2);
        result = integerStr + decimalStr.substr(1);
    }
    return result;
}
 
/**
 * 根据电话号码获取位置信息,使用拍拍开放 api
 * @param phoneNo 电话号码
 * @param succFunc 调用接口成功的回调函数
 *        回调函数入参的数据格式如下:
 *            {
              "mobile": "18576648552",
              "province": "广东",
              "isp": "中国联通",
              "stock": "1",
              "amount": "10000",
              "maxprice": "0",
              "minprice": "0",
              "cityname": "深圳"
            }
 */
function getPositionByPhoneNo(phoneNo, succFunc)
{
    $.ajax({
        url: "http://virtual.paipai.com/extinfo/GetMobileProductInfo",
        type: "post",
        data: {mobile: phoneNo, amount: 10000},
        dataType: "jsonp",
        jsonp: "callname",
        jsonpCallback: "getPhoneNumInfoExtCallback",
        success: function(data){
            if(succFunc)
            {
                succFunc(data);
            }
        },
        error: function(xhr, errorCode){
            console.log("根据手机号获取归属地服务失败【前端】");
        }
    });
}