• 日常笔记


    时间调用函数 setTimeout()

    setTimeout(function(){......},1000) ;//方法 - 多长时间后,执行
    
    衍生:
    
    无限循环
    
    var c=0;
    var t;
    
    function timedCount()
    {
    
      alert(c);
      c=c+1;
      t=setTimeout("timedCount()",1000);
    }
    
    停止

    JS 去除空格

    //str为要去除空格的字符串:
    //去除所有空格:   
    var str = str.replace(/s+/g,"");       
    //去除两头空格:   
    var str = str.replace(/^s+|s+$/g,"");
    //去除左空格:
    var str = str.replace( /^s*/, '');
    //去除右空格:
    var str = str.replace(/(s*$)/g, "");

    CSS 禁用鼠标点击事件

    .disabled { pointer-events: none; }

    回车响应击事件

    $(document).ready(function () {
      $(document).keydown(function (e) {
        var curKey = e.which;
        if (curKey == 13) {
          document.getElementById("checkBtn").click();
          return false;
          }
       });
    });

    JS时间值判断

    //取值
    function getselval(ctlid) {
        return $('#' + ctlid).val();
    }
    
    function() {
        var pubstart = getselval('startdate');
        var pubend = getselval('enddate');
    
        if (pubstart && !pubend) {
            pubend = "";
        } else if (!pubstart && pubend) {
            pubstart = "";
            pubend = getselval('enddate');
        } else if (!pubstart && !pubend) {
            pubstart = pubend = "";
        }
        if (pubstart == pubend) {} else if (new Date(pubstart) > new Date(pubend)) {
            layer.msg('截止时间不能早于开始时间!', { icon: 0, time: 1000 });
            return;
        }
    }

    JS 取时间

    var myDate = new Date();
    myDate.getYear(); //获取当前年份(2位)
    myDate.getFullYear(); //获取完整的年份(4位,1970-????)
    myDate.getMonth(); //获取当前月份(0-11,0代表1月)
    myDate.getDate(); //获取当前日(1-31)
    myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
    myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
    myDate.getHours(); //获取当前小时数(0-23)
    myDate.getMinutes(); //获取当前分钟数(0-59)
    myDate.getSeconds(); //获取当前秒数(0-59)
    myDate.getMilliseconds(); //获取当前毫秒数(0-999)
    myDate.toLocaleDateString(); //获取当前日期
    myDate.toLocaleTimeString(); //获取当前时间
    myDate.toLocaleString(); //获取日期与时间
    
    //取月份的天数
    function(year, month) {    
        var days = 32 - new Date(year, month - 1, 32).getDate();
    }

    JS 数值计算
    var d = a * 1 + b * 1 + c * 1;

    方法定义
    /*
    var func=function 和 function func()在意义上没有任何不同,但其解释优先级不同:
    后者会先于同一语句级的其他语句。
    即:
     */
    {
     var k = xx();
     function xx(){return 5;}
    }
    /*
    不会出错,
    而
     */
    {
     var k = xx();
     var xx = function(){return 5;}
    }
    /*则会出错。*/

    JS 捕捉浏览器关闭/刷新 当前页面

    var notleave = true;
    window.onbeforeunload = function () {
        if (notleave) {
         do();
            return ('确认离开当前页面吗?未保存的数据将会丢失!');
        }
    };    

    邮箱正则 

    ^[1-9]*[1-9][0-9]*$

    ^[1-9][d]*$ 

    字体超出部分处理.ellipsis

    {
       width:150px;
       display:inline-block;
    overflow
    : hidden; text-overflow: ellipsis; white-space: nowrap; } .ellipsis-1 { display: -webkit-box; overflow: hidden; text-overflow: ellipsis; word-wrap: break-word; white-space: normal !important; -webkit-line-clamp: 1;//行数控制 -webkit-box-orient: vertical; } .ellipsis-2 { display: -webkit-box; overflow: hidden; text-overflow: ellipsis; word-wrap: break-word; white-space: normal !important; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .ellipsis-3 { display: -webkit-box; overflow: hidden; text-overflow: ellipsis; word-wrap: break-word; white-space: normal !important; -webkit-line-clamp: 3; -webkit-box-orient: vertical; }

    数据重组排列出所有组合  ["a,b,c,d","1,2,3,4] => a1,a2,a3,a4,b1,b2.....

    source:["A1,A2,A3,A4", "B1,B2", "C1,C2,C3,C4"]

    var Regroup = {
        //数据重组
        Retooling: function(source) {
            var list = [];
            $.each(source, function(idx, val) {
                if (list[idx]) {
                    list[idx].push(val);
                } else {
                    list[idx] = [];
                    list[idx].push(val);
                }
            });
            console.log(list);
            var ary = [];
            $.each(list[0][0].split(','), function(i, txt) {
           //根据数据长度,分类组合
                if (list.length > 2){
                    DataRet.level2(list[1][0].split(','), txt + ",", list, 1, ary);
                } else if (list.length == 2) {
                    Regroup.level3(list[1][0].split(','), txt + ",", ary);
                } else {
                    ary.push(txt);
                }
            });
            console.log(ary);
            return ary;
        },
        //中间级遍历
        level2: function(list, val, array, idx, ary) {
            idx = idx + 1;
            $.each(list, function(i, txt) {
                var str = val;
                str += txt + ",";
                if (idx == array.length - 1) {
                    Regroup.level3(array[idx][0].split(','), str, ary);
                } else {
                    Regroup.level2(array[idx][0].split(','), str, array, idx, ary);
                }
            });
        },
        //最后元素的遍历
        level3: function(list, val, ary) {
            $.each(list, function(i, txt) {
                var str = val;
                str += txt + ",";
                ary.push(str.substr(0, str.length - 1));
            });
        }
    }

    改良处理方法:

    var array  = [["1", "2"], ["d", "e"]];
    var sarr = [
        []
    ];
    for (var i = 0; i < array.length; i++) {
        var tarr = [];
        for (var j = 0; j < sarr.length; j++) {
            for (var k = 0; k < array[i].length; k++) {
                tarr.push(sarr[j].concat(array[i][k]));
            }
        }
        sarr = tarr;
    }
    sarr;
    sarr => "[["1","d"],["1","e"],["2","d"],["2","e"]]"

    处理前的数据>>

    [{"Value":[
    {"ColumnID":"1_10","ValueList":[{"Key":"33","Value":"1"},{"Key":"34","Value":"2"},{"Key":"35","Value":"3"}]},
    {"ColumnID":"1_11","ValueList":[{"Key":"36","Value":"4"},{"Key":"37","Value":"5"}]},
    {"ColumnID":"1_12","ValueList":[{"Key":38,"Value":"6"}]}
    ]}]

    //演变而来
    var rebuildData = function(list) { var newlist = []; for (var n = 0; n < list.length; n++) { var array = list[n].Value; var sarr = [ [] ]; for (var i = 0; i < array.length; i++) { var tarr = []; for (var j = 0; j < sarr.length; j++) { var valList = array[i].ValueList; for (var k = 0; k < valList.length; k++) { valList[k].ColumnID = array[i].ColumnID; if (valList[k].Value === "空值") { valList[k].Value = ""; } tarr.push(sarr[j].concat(valList[k])); } } sarr = tarr; } newlist.push({ group: sarr }); } return newlist; }

    处理后的数据 newlist>>

    [{"group":[
    [{"Key":"33","Value":"1","ColumnID":"1_10"},{"Key":"36","Value":"4","ColumnID":"1_11"},{"Key":38,"Value":"6","ColumnID":"1_12"}],
    [{"Key":"33","Value":"1","ColumnID":"1_10"},{"Key":"37","Value":"5","ColumnID":"1_11"},{"Key":38,"Value":"6","ColumnID":"1_12"}],
    [{"Key":"34","Value":"2","ColumnID":"1_10"},{"Key":"36","Value":"4","ColumnID":"1_11"},{"Key":38,"Value":"6","ColumnID":"1_12"}],
    [{"Key":"34","Value":"2","ColumnID":"1_10"},{"Key":"37","Value":"5","ColumnID":"1_11"},{"Key":38,"Value":"6","ColumnID":"1_12"}],
    [{"Key":"35","Value":"3","ColumnID":"1_10"},{"Key":"36","Value":"4","ColumnID":"1_11"},{"Key":38,"Value":"6","ColumnID":"1_12"}],
    [{"Key":"35","Value":"3","ColumnID":"1_10"},{"Key":"37","Value":"5","ColumnID":"1_11"},{"Key":38,"Value":"6","ColumnID":"1_12"}]
    ]}]

    后续C#版排列组合

    static void Main(string[] args)
            {
              
              List<List<string>> val = new List<List<string>> {
                      new List<string>(new string[] { "T" }),
                      new List<string>(new string[] { "C","G" }),
                      new List<string>(new string[] { "A","H","K" }),
                      new List<string>(new string[] { "0","1","2","3","4","5"}),
                      new List<string>(new string[] { "0","1","2","3","4","5","6","7","8","9"})
                    };
                List<List<string>> data = composeData(val);
                foreach (List<string> one in data)
                {
                    for (int i = 0; i < one.Count; i++)
                    {
                        Console.Write(one[i]);
                        if (i != one.Count - 1)
                        {
                            Console.Write("_");
                        }
                    }
                    Console.WriteLine();
                }
                Console.WriteLine(data.Count);
                Console.ReadKey();
    }
     //组合排列
            static List<List<string>> composeData(List<List<string>> val)
            {
                List<List<string>> array = val;
                List<List<string>> sarr = new List<List<string>>();
                sarr.Add(new List<string>());//新加空组
                for (int i = 0; i < array.Count; i++)
                {
                    List<List<string>> tarr = new List<List<string>>();//接收本轮所有组合
                    for (int j = 0; j < sarr.Count; j++)
                    {
                        for (var k = 0; k < array[i].Count; k++)
                        {
                            List<string> slist = new List<string>();//接收2维数组值
                            foreach (string str in sarr[j])
                            {
                                slist.Add(str);
                            }
                            slist.Add(array[i][k]);//追加值
                            tarr.Add(slist);
                        }
                    }
                    sarr = new List<List<string>>();
                    foreach (List<string> str in tarr)
                    {
                        sarr.Add(str);
                    }
                }
                return sarr;
            }

     vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。

    今天安装了vs2015 下载一个项目进行试用,启动调试的时候提示

    HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。

    最可能的原因:

    • 没有为请求的 URL 配置默认文档,并且没有在服务器上启用目录浏览。
    可尝试的操作:
    • 如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在。
    • 启用目录浏览。确认网站或应用程序配置文件中的 configuration/system.webServer/directoryBrowse@enabled 属性已设置为 true。
      1. 转到 IIS Express 安装目录。
      2. 运行appcmd set config /section:system.webServer/directoryBrowse /enabled:true以在服务器级别启用目录浏览。
      3. 运行appcmd set config ["SITE_NAME"] /section:system.webServer/directoryBrowse /enabled:true以在网站级别启用目录浏览。

    解决方法:

    1.在网站的配置文件里添加一句

    <system.webServer>
        <directoryBrowse enabled="true" />
    </system.webServer>

    2.在我的文档 C:UsersAdministratorDocumentsIISExpressconfigapplicationhost.config

    里找到<directoryBrowse enabled="false" />节点,把false改为true,这样就可以了。


    javascript 判断某个数组中是否包含另一个数组

    //是否被包含,是返回true,不是返回false
    function isContained(a, b){
        if(!(a instanceof Array) || !(b instanceof Array)) return false;
        if(a.length < b.length) return false;
        var aStr = a.toString();
    console.info(aStr);
        for(var i = 0, len = b.length; i < len; i++){
    console.info(aStr.indexOf(b[i]));
           if(aStr.indexOf(b[i]) == -1) return false;
        }
        return true;
    }
    function test(){
        var a = [1,2,3,4,5];
        var b = [1,4,3,2];
        var c = [1,6];
        alert(isContained(a,b));//true
        alert(isContained(a,c));//false
    }

    网站中页面跳转传参

    <!-----------a.html --------->
    function
    jump(id) {   var url = "b.htm?id=" + id + "&v=" + Math.random();   window.open(url, '_self'); }
    //公共JS中
    var
    para = { ... } var getUrlParams = function() { if (para.args) { return para.args; } else { var args = []; var query = location.search.substring(1); //获取查询串 var pairs = query.split("&"); //在逗号处断开 for (var i = 0; i < pairs.length; i++) { var pos = pairs[i].indexOf('='); //查找name=value if (pos == -1) continue; //如果没有找到就跳过 var argname = pairs[i].substring(0, pos); //提取name var value = pairs[i].substring(pos + 1); //提取value args[argname] = unescape(value); //存为属性 } return (para.args = args); } };
    <!--------b.html:--------->
    var
    args = getUrlParams(); var step = args["id"];

     发布网站(接口api),域名访问

    1.添加新网站,绑定好路径

    2.网站绑定

    端口使用默认的(80)

    主机名自定义

    多个网站可共用默认端口

    3.本机测试访问,做重定向设置

    C:WindowsSystem32driversetchosts

    xxx.xxx.x.xxx(本机IP地址)  yyy.yyyy.yyy(主机名)

    4.浏览器访问测试


    C#读取Excel到DataSet

    public static System.Data.DataSet LoadDataFromExcel(string filePath)
    {
        try
        {
            string strConn;
            strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath +
                      ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'";
            System.Data.OleDb.OleDbConnection OleConn = new System.Data.OleDb.OleDbConnection(strConn);
            OleConn.Open();
            string tbName = OleConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null).Rows[0][2].ToString().Trim();
            String sql = "SELECT * FROM  [" + tbName + "A2:H65535" + "]"; //可是更改Sheet名称,比如sheet2,等等   
            System.Data.OleDb.OleDbDataAdapter OleDaExcel = new System.Data.OleDb.OleDbDataAdapter(sql, OleConn);
            System.Data.DataSet OleDsExcle = new System.Data.DataSet();
            OleDaExcel.Fill(OleDsExcle, tbName);
            OleConn.Close();
            return OleDsExcle;
        }
        catch (Exception ex)
        {
            return null;
        }
    }

    测试日志

    void log(string filePath, string text)
    {
        if (!System.IO.Directory.Exists(filePath))
        {
            System.IO.Directory.CreateDirectory(filePath);
        }
        using (System.IO.StreamWriter sw = System.IO.File.AppendText(filePath + "\InLog.txt"))
        {
            sw.WriteLine(DateTime.Now.ToLongTimeString());
            sw.WriteLine(text);
            sw.WriteLine("");
        }
    }

    C# base64解码

    string key = "dXNlci9jZXJ0";
    byte[] outputb = Convert.FromBase64String(key);
    key = System.Text.Encoding.Default.GetString(outputb);

     关于在服务器上布置Excel 实现操作 遇到的问题

    检索 COM 类工厂中CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误:80070005。

    具体解决方法如下:

    1:在服务器上安装office的word软件.

    2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"

    3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

    4:在"DCOM配置"中找到"Microsoftword文档",在它上面点击右键,然后点击"属性",弹出"Microsoft word文档属性"对话框

    5:点击"标识"标签,选择"交互式用户"

    6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(点击“高级”按钮查找,不是手动输入),并给它赋予"本地启动"和"本地激活"权限.

    7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户(点击“高级”按钮查找,不是手动输入),然后赋予"本地访问"权限.

     

    按照上面的步骤做完之后可能还会报下面这样一个错:(或者说一种奇怪的情况:远程连接着服务器时,操作OK;关闭远程登录时,操作失败)

    检索 COM 类工厂中CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误:8000401a。

    8.运行dcomcnfg打开组件服务,

    9.依次展开"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

    10.找到"Microsoft Excel应用程序"或"MicrosoftWord应用程序",

    11.右键打开属性对话框,点击"标识"选项卡,

    12.点"下列用户",把管理员的用户密码正确填写进去...

    13.点击"安全"选项卡,

    14.依次把"启动和激活权限","访问权限","配置权限",都选择为自定义,

    如果上面这些步骤都做完之后还没有解决问题,就需要在config文件中<system.web>节点下添加如下一句话

    <identity impersonate="true" userName="Administrator" password="xxxxxxx" />

    服务器登录名和服务器登录密码要与上面第12步输入的用户名,密码相一致。

    原文引自:http://blog.csdn.net/dotnet25/article/details/26495189


    Git路径配置:

     Git clone https://username:password@git.domain.com/project.git 
    如果username中有@符号,可以用 %40 代替


     关于页面的滚动问题

    $(document).height()     //是获取整个页面的高度 ,不随窗口变化而变动
    $(window).height()       //是获取当前 也就是你浏览器所能看到的页面的那部分的高度 注意当浏览器窗口大小改变时(如最大化或拉大窗口后) 会变化
    $(document).scrollTop()  //获取垂直滚动的距离  即当前滚动的地方的窗口顶端到整个页面顶端的距离
    $(document).scrollLeft() //这是获取水平滚动条的距离
    scrollTop()==0           //顶端
    scrollTop()>=$(document).height()-$(window).height() //已经滚动到底端

    同一DIV中,多个同级子Div 同高度自适应

    <div style="overflow:hidden;">
        <div style="padding-bottom:2000px;margin-bottom:-2000px;"></div>
        <div style="padding-bottom:2000px;margin-bottom:-2000px;"></div>   
    </div>

     padding 和 margin 的数值根据合适自定 padding-bottom = -(margin-bottom)

    设定值为子div中高的最大值,可实现子div自动等高


     C# 数据对比


    List
    <string> ListA = new List<string>(); List<string> ListB = new List<string>(); List<string> ListResult = new List<string>(); ListResult = ListA.Distinct().ToList();//去重 ListResult = ListA.Except(ListB).ToList();//差集 ListResult= ListA.Union(ListB).ToList(); //并集 ListResult = ListA.Intersect(ListB).ToList();//交集
    <注:类集合不适用>

     Next


    /************************End******************************/
  • 相关阅读:
    再谈MySql索引
    线程基础
    设计模式入门基础
    40个Android问题
    android学习小例子——验证码倒计时按钮
    Activity的启动模式
    Android项目无法运行的解决方法
    AndroidStudio 更新gradle Error:Failed to complete Gradle execution. Cause: Connection reset
    三月课堂上线,干货震撼来袭
    对比JQuery与JavaScript
  • 原文地址:https://www.cnblogs.com/Feng-Scorpio/p/5949567.html
Copyright © 2020-2023  润新知