zoukankan      html  css  js  c++  java
  • js 常用自定义方法

    对象数据转formdata格式

    /**
     * js 对象转FormData
     * 如:{"a": 2, "b": 3}
     * @param object
     * @returns {FormData}
     */
    function jsToFormData(object) {
        var formData = new FormData();
        //遍历对象
        for(var key in object){
            //添加到FormData
            formData.append(key,object[key]);
        }
        return formData;
    }
    

    判断字符串是否相等,不区分大小写

    /**
     * 判断字符串是否相等,不区分大小写
     * @constructor
     */
    function CheckEquals(str1,str2) {
        if(str1.length === str2.length && str1.toLowerCase() === str2.toLowerCase()) {
            return true;
        }
        return false;
    }
    

    获取对象属性 指定属性前缀的所有属性键名

    /**
     * 获取对象属性   指定属性前缀的所有属性键名
     * @param prefix
     */
    function getObjectPrefixKeys(object,prefix) {
        var prefixArr = new Array();
        //遍历对象
        for(var key in object){
            if(CheckEquals(key.substring(0, prefix.length), prefix)){
                prefixArr.push(key);
            }
        }
        return prefixArr;
    }
    

    通过表单ID 获取表单转换成js对象

    /**
     * 通过表单ID 获取表单数组转换成js对象
     * @param fromId
     */
    function fromToJsObjectByFromId(fromId) {
        //获取表单的所有内容
        var fromArray = $('#'+fromId).serializeArray();
        //console.log(fromArray, '-------------------fromArray--------------');
        var params = {};
        for(var i = 0; i < fromArray.length; i++){
            //处理表单如果有多选框的情况
            if(fromArray[i].name.indexOf('[]') !== -1 ){//多选框
                //去掉[]的前缀
                var prefix = fromArray[i].name.substring(0,fromArray[i].name.indexOf('[]'));
                //console.log(prefix);
                var key = prefix + '['+getObjectPrefixKeys(params, prefix).length+']';
                params[key] = fromArray[i].value;
            }else{
                params[fromArray[i].name] = fromArray[i].value;
            }
        }
        //处理表单的文件 单文件
        var filesInput = $('#'+fromId+' input[type=file]');
        if(filesInput.length > 0){
            for(var i = 0; i < filesInput.length; i++) {
                var key = filesInput[i].name;
                var value =  filesInput[i].files[0];
                params[key] = value;
            }
    
        }
        return params;
    }
    

    发送ajax 请求到后台(Promise 结构保证异步回调返回正常)

    /**
     * 发送ajax 请求到后台
     * Promise 结构
     * @param params 参数列表对象 如{"a": 2, "b": 3}
     * @param requestMethod 字符串 请求方式 如:GET POST
     * @param url 字符串 后台地址
     */
    function sendAjax (params,requestMethod, url) {
        //console.log(params, '-------------------params--------------');
        return new Promise(function(resolve, reject){
            if (window.XMLHttpRequest){
                // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码
                xmlhttp=new XMLHttpRequest();
            }
            else{
                //IE6, IE5 浏览器执行的代码
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            //xmlhttp.open("GET","gethint.php?q="+str,true);
            xmlhttp.open(requestMethod,url,true);
            //检查是否是post
            if(CheckEquals(requestMethod, 'POST') === true){
                //将参数列表对象转换成fromdata对象并发送
                xmlhttp.send(jsToFormData(params));
            }else{
                xmlhttp.send();
            }
            //响应
            xmlhttp.onload = function () {
                if (xmlhttp.status === 200) {
                    resolve(xmlhttp.responseText);
                } else {
                    reject(new Error(xmlhttp.statusText));
                }
            };
        });
    }
    

    发送ajax 请求 获取表单提交 弹出提示 重载表格 关闭模态框

    /**
     * 发送ajax 请求 弹出提示 重载表格 关闭模态框
     * @param url ajax url
     * @param fromId from 表单的id
     * @param tableId 表格的id
     * @param modalId 模态框的id
     */
    function submitPostFromAjax(url, fromId, tableId, modalId) {
        sendAjax(fromToJsObjectByFromId(fromId), 'POST', url).then(function(value){
            //console.log('内容是:' + value);
            var res = JSON.parse(value);
            alert(res.msg);
            if(res.code == 200){
                //关闭模态框并刷新表格
                $('#'+modalId).modal('hide');
                $('#'+tableId).DataTable().ajax.reload();
            }
        }).catch(function onRejected(error){
            alert('错误:' + error);
        });
    }
    

    像素和尺寸单位之间互相转换

    //http://www.gaituba.com/px2cm/ 测试单位换算
    //百度单位换算
    //dpi 一般使用300 dpi 即可
    /**
     * 像素和尺寸单位之间互相转换
     * @param width 宽度
     * @param heigth 高度
     * @param inputType 输入的单位类型 px cm mm in
     * @param outType 要转换的单位类型  px cm mm in
     * @param dpi 图像每英寸长度内的像素点数
     * @returns {string}
     */
    function unitConvert(width, heigth, inputType, outType, dpi){
        /*
            px 转 cm mm in
            实际尺寸(英寸)= 像素/DPI;
            1英寸(in) = 2.54厘米(cm)
    
            尺寸 转 px
            像素 = 英寸 * DPI
            1cm = 0.3937008 英寸
        */
        //统一尺寸 px
        var uniformWidth =  width;
        var uniformHeigth =  heigth;
        //将输入的尺寸,统一转成px处理
        if(inputType !== 'px'){
            //cm 转 px
            if(inputType === 'cm'){
                uniformWidth =  width * 0.3937008 * dpi;
                uniformHeigth =  heigth * 0.3937008 * dpi;
            }
            //mm 转 px
            if(inputType === 'mm'){
                uniformWidth =  (width / 10) * 0.3937008 * dpi;
                uniformHeigth =  (heigth / 10) * 0.3937008 * dpi;
            }
            //in 转 px
            if(inputType === 'in'){
                uniformWidth =  width * dpi;
                uniformHeigth =  heigth * dpi;
            }
        }
        var result = {};
        result.width = uniformWidth;
        result.heigth = uniformHeigth;
        if(outType !== 'px'){
            //px 转 cm
            if(outType === 'cm'){
                result.width = (uniformWidth/dpi) * 2.54;
                result.heigth = (uniformHeigth/dpi) * 2.54;
            }
            //px 转 mm
            if(outType === 'mm'){
                result.width = (uniformWidth/dpi) * 2.54 * 10;
                result.heigth = (uniformHeigth/dpi) * 2.54 * 10;
            }
            //px 转 in
            if(outType === 'in'){
                result.width = uniformWidth/dpi ;
                result.heigth = uniformHeigth/dpi;
            }
        }
        return JSON.stringify(result);
    }
     console.log(unitConvert(20, 20, 'cm', 'px', 300), 'cm to px 300dpi------');
     console.log(unitConvert(20, 20, 'mm', 'px', 300), 'mm to px 300dpi------');
     console.log(unitConvert(20, 20, 'in', 'px', 300), 'in to px 300dpi------');
     console.log(unitConvert(200, 200, 'px', 'cm', 300), 'px to cm 300dpi------');
     console.log(unitConvert(200, 200, 'px', 'mm', 300), 'px to cm 300dpi------');
     console.log(unitConvert(200, 200, 'px', 'in', 300), 'px to in 300dpi------');
    

    根据横向分辨率和纵向分辨率计算计算dpi

    /**
     * 根据横向分辨率和纵向分辨率计算计算dpi
     * @param widthPx
     * @param heigthPx
     * @returns {number}
     */
    function getDPI(widthPx, heigthPx){
        /*
            dpi 图像每英寸长度内的像素点数
            dpi=(√(横向分辨率^2+纵向分辨率^2))/图片尺寸(英寸)
            图片的DPI(Dot Per Inch的缩写)一般是指每英寸的像素,类似于密度,即每英寸图片上的像素点数量,用来表示图片的清晰度
        */
        return Math.sqrt( widthPx * widthPx + heigthPx * heigthPx);
    }
     console.log(getDPI(1920, 1080), 'getDPI-------');
     console.log(getDPI(300, 300), 'getDPI-------');
    
  • 相关阅读:
    android中获取某段程序的执行时间
    图像位宽对齐
    使用 ssh 连接github的方法说明(gitub的官方说法)
    转:程序员必须知道的几个Git代码托管平台
    转:webRTC的前世今生
    Eclipse c++头文件问题(未完)
    [原创] NetBean开发c++程序指南1- 加入c++项目文件夹
    xshell5 启动显示 mfc110.dll msvcp110.dll 未找到问题 解决办法
    vmware12安装vmtools
    转: EclipseIDE开发 for C++
  • 原文地址:https://www.cnblogs.com/makalochen/p/13435530.html
Copyright © 2011-2022 走看看