成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端常用代碼片段(一)

chnmagnus / 880人閱讀

最后更新于2019年1月13日

前端常用代碼片段(一) 點(diǎn)這里
前端常用代碼片段(二) 點(diǎn)這里
前端常用代碼片段(三) 點(diǎn)這里
前端常用代碼片段(四) 點(diǎn)這里
前端常用代碼片段(五) 點(diǎn)這里
前端常用代碼片段(六) 點(diǎn)這里

大部分需要引入 jquery-1.9.1.min.js(兼容ie8)
1.回車觸發(fā)事件的代碼
    $(function(){
        $("#username").focus();
        //回車查詢
        document.onkeydown = function(event) {
            var e = event || window.event || arguments.callee.caller.arguments[0];
            if (e && e.keyCode == 13) {
                $("#signIn").trigger("click");
            }
        };
    });
    
2.把對象格式的參數(shù)轉(zhuǎn)成鍵值對,并以&分割
/**
 * 把對象格式的參數(shù)轉(zhuǎn)成鍵值對,并以&分割
 * @param arr 要轉(zhuǎn)換的對象參數(shù)
 * @returns {string}
 */
function maiyaBuildParam(arr){
    var result = "";
    for(var key in arr)
    {
        result += key + "=" + encodeURIComponent(arr[key]) + "&";
    }
    result = result.substr(0,result.length-1);
    return result;
}
3.去除表單內(nèi)容兩端的空格,設(shè)置cookie緩存,對象轉(zhuǎn)成字符串
 function submitForm() {
        var param = {
            userName: $.trim($("#username").val()),
            password: $.trim($("#password").val())
            //userName: $("#username").val().trim(),
            //password: $("#password").val().trim()
            //ie8下邊支持$.trim,   不支持$("#").val().trim()
        };
        $.ajax({
            type: "post",
            url: serverIp + "rest/login?" + Math.random() + "&" + BuildParam(param),   
            //這里傳入一個隨機(jī)數(shù)避免ie8緩存問題,下邊cache對ie8無效
            //data: JSON.stringify(param),  //傳入組裝的參數(shù)
            //contentType: "application/json; charset=utf-8",
            cache: false,  //禁用緩存
            dataType: "json",
            success: function (result) {
                if(result.result_code === "1"){
                    $.cookie("userinfo", JSON.stringify(result.data), { expires: 7 });
                    window.location.href = "index.html";
                }else{
                    alert("用戶名或密碼錯誤");
                }
            },
            error: function(msg) {
                alert(msg.message || "操作失?。?);
            }
        })
    }
4.設(shè)置cookie,獲取cookie
//設(shè)置cookie比,并將json數(shù)據(jù)源轉(zhuǎn)成string
    $.cookie("userinfo", JSON.stringify(json), { expires: 7 });

//獲取cookie,并將返回的string格式數(shù)據(jù)解析成json
    JSON.parse($.cookie("userinfo"));
 
//清除cookie
    $.cookie("userinfo",null);

項(xiàng)目示例

//設(shè)置cookie
 $.ajax({
            type: "post",
            url: serverIp + "rest/login?" + Math.random() + "&" + maiyaBuildParam(param),
            dataType: "json",
            success: function (result) {
                if(result.result_code === "1"){
                    $.cookie("userinfo", JSON.stringify(result.data), { expires: 7 });
                    window.location.href = "index.html";
                }else{
                    alert("用戶名或密碼錯誤");
                }
            },
            error: function(msg) {
                alert(msg.message || "操作失?。?);
            }
        })
//獲取和清空cookie
    if(!$.cookie("userinfo")) {
        location.href="login.html";
    }
    $("#loginOut a").click(function () {
        $.cookie("userinfo",null);
    });
    var userinfo = JSON.parse($.cookie("userinfo"));
    if(userinfo) {
        var _src = userinfo.docPic ? userinfo.docPic : (userinfo.docSex == 2 ? "images/women.png" : "images/man.png");
        $("#userInfoImage").attr("src",_src)
        $("#username,#leftusername").html(userinfo.docName);
        $("#jobtitle").html(userinfo.docProfe);
        var docRole = userinfo.docRole == 0 && "醫(yī)師" || "管理員";
        $("#loginuser").html(docRole);
    }
    if(userinfo.docRole == 0) {
        $("#menu-product").show();
        $("#menu-admin,#menu-tongji").hide();
    } else if(userinfo.docRole == 1) {
        $("#menu-product").hide();
        $("#menu-admin,#menu-tongji").show();
    }

說明:
jquery.cookie.js 只允許開發(fā)人員存入字符串,故用JSON.stringify(json)將json轉(zhuǎn)換成string

補(bǔ)充:JSON.stringify與JSON.parse() [ 此類方法在低版本ie上需要引入json2.js ]

parse用于從一個字符串中解析出json對象,如
var str = "{"name":"huangxiaojian","age":"23"}"
JSON.parse(str)
-->
Object
age: "23"
name: "huangxiaojian"
__proto__: Object
注意:單引號寫在{}外,每個屬性名都必須用雙引號,否則會拋出異常。

stringify()用于從一個對象解析出字符串,如
var a = {a:1,b:2}
JSON.stringify(a)
--->
結(jié)果:"{"a":1,"b":2}"
5.三目運(yùn)算的另一種寫法
var docRole = userinfo.docRole == 0 && "醫(yī)師" || "管理員";

var _src = userinfo.docPic ? userinfo.docPic : (userinfo.docSex == 2 ? "images/women.png" : "images/man.png");

記得以前看過別人寫的文章里提到有網(wǎng)易的面試題出現(xiàn)過區(qū)分 ||  &&聯(lián)合使用時返回的結(jié)果,當(dāng)時老記不住,現(xiàn)在有這個應(yīng)該容易記了
6.時間格式化

使用方式

new Date().format("yyyy-MM-dd");  // "2017-02-18"

new Date().format("yyyy-MM-dd hh-mm-ss");  //
"2017-02-18 04-41-08"
new Date().format("yyyy-MM-dd hh/mm/ss");  //
"2017-02-18 04/41/18"
new Date().format("yyyy-MM-dd HH/mm/ss");  //
"2017-02-18 16/42/30"

new Date().format("yyyy-MM-dd E HH/mm/ss");
  //"2017-02-18 六 16/51/16"
new Date().format("yyyy-MM-dd EE HH/mm/ss");  //
"2017-02-18 周六 16/51/30"

new Date().format("yyyy-MM-dd EEE HH/mm/ss");  //
"2017-02-18 星期六 16/51/77"

源碼

Date.prototype.format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //12小時
        "H+": this.getHours(), //24小時
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    var week = {
        "0": "日",
        "1": "一",
        "2": "二",
        "3": "三",
        "4": "四",
        "5": "五",
        "6": "六"
    };
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    if (/(E+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "星期" : "周") : "") + week[this.getDay() + ""]);
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
    }
    return fmt;
}
7.獲取輸入日期所在周或者前后某周的周一

使用方式

new Date();
  //Sat Feb 18 2017 17:35:25 GMT+0800 (中國標(biāo)準(zhǔn)時間)

getMonday( new Date(),-1);  //
Mon Feb 06 2017 17:40:45 GMT+0800 (中國標(biāo)準(zhǔn)時間)

getMonday( new Date());  //Mon Feb 13 2017 17:34:34 GMT+0800 (中國標(biāo)準(zhǔn)時間)

getMonday( new Date(),1);  //
Mon Feb 20 2017 17:34:43 GMT+0800 (中國標(biāo)準(zhǔn)時間)

源碼

function getMonday(date, offset){
    var today=date || new Date();
    return new Date( today - ((today.getDay() ||7) -1  - (offset||0) *7 )  *864E5  );
}


//改進(jìn),獲取輸入日期所在周或者前后某周的任意某天
function getWeekAnyday(weekday,offset,date){
    var today=date || new Date();
    return new Date( today - ((today.getDay() ||7) -(weekday||0)  - (offset||0) *7 )  *864E5  );
}
8.獲取輸入日期的前后某天日期

使用方式

new Date();
  //Sat Feb 18 2017 17:35:25 GMT+0800 (中國標(biāo)準(zhǔn)時間)

getOneDayByDate(new Date() ,-2);  //Thu Feb 16 2017 18:20:39 GMT+0800 (中國標(biāo)準(zhǔn)時間)

getOneDayByDate(new Date() ,2);  //Mon Feb 20 2017 18:20:49 GMT+0800 (中國標(biāo)準(zhǔn)時間)

源碼

function getOneDayByDate(date, n) {
    var d = typeof date == "string" && new Date(date) || date;
    d.setTime(d.getTime()+24*60*60*1000*n);
    //return d.getFullYear()+"-" + (d.getMonth()+1) + "-" + d.getDate();  //用于獲取"2017-2-16"格式日期
    return new Date(d);
}
9.My97DatePicker使用

首先引入js

場景1:選擇時間段,前者不能大于后者的時間,后者不能小于前者時間且不大于當(dāng)天時間

  -


給input賦相差一個星期的初始值

 $("#datemin").val(getOneDayByDate(new Date(), -6).format("yyyy-MM-dd"));
 $("#datemax").val(thisDate());

function thisDate() {
    var d = new Date();
    return d.format("yyyy-MM-dd");
}
10.刷新當(dāng)前頁面
//刷新當(dāng)前頁面

 location.reload();

//如果把該方法的參數(shù)設(shè)置為 true,那么無論文檔的最后修改日期是什么,它都會繞過緩存,從服務(wù)器上重新下載該文檔。這與用戶在單擊瀏覽器的刷新按鈕時按住 Shift 健的效果是完全一樣。

這是原生的方法

11. 判斷元素是否在數(shù)組內(nèi)

js方法

var arr = [1, 2, 3];
// js arr.indexOf(3)
var result1 = arr.indexOf(3); //返回index為2

jquery方法

var arr = [1, 2, 3];
// jquery $.inArray(3, arr)
var result = $.inArray(3, arr); //返回index為2

自定義方法

var arr = [1, 2, 3];
// 自定義 contains(arr, 3)方法
function contains(arr, obj) {
    //while
    var i = arr.length;
    while(i--) {
        if(arr[i] === obj) {
            return i;
        }
    }
    return -1;
}
var result1 = contains(arr, 3); //返回index為2
12.解析url中傳遞的參數(shù)

描述:解析ajax get方式傳遞的參數(shù),
例如“https://www.zybuluo.com/mdedi...://www.zybuluo.com/static/editor/md-help.markdown”

1.方法一

使用方式

    $.getUrlParam("url"); //"https://www.zybuluo.com/static/editor/md-help.markdown"

源碼

$.getUrlParam = function(name) {
    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
    var r = decodeURIComponent(window.location.search).substr(1).match(reg);
    if (r!=null) return unescape(r[2]); return null;
};

說明:此方式是將方法拓展到了jquery,也可以定義成方法

使用方式

    getUrlParam("url");  //"https://www.zybuluo.com/static/editor/md-help.markdown"
function getUrlParam(name) {
    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
    var r = decodeURIComponent(window.location.search).substr(1).match(reg);
    if (r!=null) return unescape(r[2]); return null;
};
2.方法二將攜帶的所有參數(shù)轉(zhuǎn)化成json對象

使用方式

var urlParamsToJson= getUrlParamsToJson(); //Object {url: "https://www.zybuluo.com/static/editor/md-help.markdown"}

源碼

function getUrlParamsToJson() {
    var url = location.href;
    var nameValue;
    var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
    var paraObj = {};
    for (var i = 0; nameValue = paraString[i]; i++) {
      var name = nameValue.substring(0, nameValue.indexOf("=")).toLowerCase();
      var value = nameValue.substring(nameValue.indexOf("=") + 1, nameValue.length);
      if (value.indexOf("#") > -1) {
         value = value.split("#")[0];
      }
      paraObj[name] = value;
    }
    return paraObj;
};
13.封裝折疊(兼容ie8)

html

  • 標(biāo)題+

    內(nèi)容
    很多內(nèi)容
  • 標(biāo)題+

#box{
    width:500px;height:400px;
    text-align:center;
    border:1px solid #d3d3d3;background:#fff;
    display: table-cell;
    vertical-align:middle;
 
}
 
#box img{
    vertical-align:middle;
}
20.decodeURI() 函數(shù)解碼處理不了"+"

使用javascript的decodeURIComponent函數(shù)解碼查詢字符串時,處理不了"+",例如下面

這里需要再做一下處理:

decodeURIComponent(str.replace(/+/g, "%20"));

即在調(diào)用decodeURIComponent函數(shù)之前要先把+替換為%20,這樣就沒有問題了

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/86888.html

相關(guān)文章

  • 前端常用代碼片段(六)

    摘要:本文總結(jié)的代碼片段六持續(xù)更新前端常用代碼片段一點(diǎn)這里前端常用代碼片段二點(diǎn)這里前端常用代碼片段三點(diǎn)這里前端常用代碼片段四點(diǎn)這里前端常用代碼片段五點(diǎn)這里前端常用代碼片段六點(diǎn)這里多彩的傳入和變量本節(jié)參考文章多彩的版本號比較和和本節(jié)參考文章 本文總結(jié)的代碼片段(六)--持續(xù)更新 前端常用代碼片段(一) 點(diǎn)這里前端常用代碼片段(二) 點(diǎn)這里前端常用代碼片段(三) 點(diǎn)這里前端常用代碼片段(四) 點(diǎn)...

    zengdongbao 評論0 收藏0
  • 前端常用代碼片段(四)

    摘要:盡量避免使用表達(dá)式又稱動態(tài)屬性。使用計(jì)算數(shù)組中的重復(fù)項(xiàng)如果你想計(jì)算數(shù)組中的每個值有多少重復(fù)值,也可以快速幫到你。 前端常用代碼片段(一) 點(diǎn)這里前端常用代碼片段(二) 點(diǎn)這里前端常用代碼片段(三) 點(diǎn)這里前端常用代碼片段(四) 點(diǎn)這里前端常用代碼片段(五) 點(diǎn)這里前端常用代碼片段(六) 點(diǎn)這里 1.簡述一下你對HTML語義化的理解?并寫出一段語義化的HTML? 語義化是指根據(jù)內(nèi)容的結(jié)...

    worldligang 評論0 收藏0
  • 前端常用代碼片段(三)

    摘要:可以是數(shù)字或者是字符串如果是數(shù)字則表示屬性名前加上空格符號的數(shù)量,如果是字符串,則直接在屬性名前加上該字符串。 最后更新于2019年1月13日 前端常用代碼片段(一) 點(diǎn)這里前端常用代碼片段(二) 點(diǎn)這里前端常用代碼片段(三) 點(diǎn)這里前端常用代碼片段(四) 點(diǎn)這里前端常用代碼片段(五) 點(diǎn)這里前端常用代碼片段(六) 點(diǎn)這里 1.打亂數(shù)組中元素順序(類似音樂隨機(jī)播放) function...

    U2FsdGVkX1x 評論0 收藏0
  • 前端常用代碼片段(二)

    摘要:兩個數(shù)組內(nèi)的元素相加第二種考慮兼容一個數(shù)組插入到另一個數(shù)組通過方法將一個數(shù)組插入到另外一個數(shù)組數(shù)字排序的函數(shù)在默認(rèn)情況下使用字母數(shù)字字符串碼點(diǎn)排序。它們具有不同的引用,無法用相比較。 最后更新于2019年1月13日 前端常用代碼片段(一) 點(diǎn)這里前端常用代碼片段(二) 點(diǎn)這里前端常用代碼片段(三) 點(diǎn)這里前端常用代碼片段(四) 點(diǎn)這里前端常用代碼片段(五) 點(diǎn)這里前端常用代碼片段(六)...

    FWHeart 評論0 收藏0
  • 前端常用代碼片段(五)

    摘要:當(dāng)運(yùn)行時,如果不為,則將超時函數(shù)推送到事件隊(duì)列,并且函數(shù)退出,從而使調(diào)用堆棧清零。因此,該方法從頭到尾不經(jīng)過直接遞歸調(diào)用即可處理,因此調(diào)用堆棧保持清晰,無論迭代次數(shù)如何。 前端常用代碼片段(一) 點(diǎn)這里前端常用代碼片段(二) 點(diǎn)這里前端常用代碼片段(三) 點(diǎn)這里前端常用代碼片段(四) 點(diǎn)這里 1.tap事件點(diǎn)透問題? 問題點(diǎn)擊穿透問題:點(diǎn)擊蒙層(mask)上的關(guān)閉按鈕,蒙層消失后發(fā)現(xiàn)觸...

    MoAir 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<