JavaScript----常用方法

  • 用JQ复制一个对象
var newobj=$.extend(true,{},oldobj);
  • ajax原理
//①:创建对象
var xhr=new XMLHttpRequest();
//②:打开请求
xhr.open('GET','example.txt',true);
//③:发送请求到服务器
xhr.send();
//④:接受响应
xhr.onreadystatechange=function(){}
//当readystate值从一个值变为另一个值时,都会触发readystatechange事件;
//当readystate==4时,表示已经接收到全部响应数据;
//当status==200时,表示服务器成功返回页面和数据;
//如果②和③内容同时满足,则可以通过xhr.responseText,获得服务器返回的内容;
  •  读取当前页面URL值
function createbzpageaddr() {
    ///<summary>读取当前页面的地址值</summary>
    var loca = window.location;
    ///当前完整url
    this.url = loca.href;
    ///当前域名:端口号如jzxco.com:80
    this.host = loca.host;
    ///当前网址#后内容
    this.hash = loca.hash;
    ///当前域名如www.jzxco.com
    this.hostname = loca.hostname;
    ///当前主域名如jzxco.com
    this.maindomain = reurlanalysis(this.hostname, 3);
    ///当前地址路径栏如http://www.jzxco.com/test.html的test.html
    this.pathname = loca.pathname;
    ///当前网址的端口号
    this.port = loca.port;
    ///当前网址的头部分,如http: https:
    this.protocol = loca.protocol;
    ///前前网址的?后部分 如http://www.jzxco.com/test.html?tx=1的tx=1
    this.search = loca.search;
    ///当前页面分辨率x
    this.screenx = screen.width;
    ///当前页面分辨率y
    this.screeny = screen.height;
    ///当前网址的标题
    this.title = document.title;
}
  • 读取标签属性值,无值返回默认值
function rescrvalue(jstag, srcstr, mrz) {
    ///<summary>读属性的值,如果没有值,或值为异常,则读取默认值</summary>
    ///<param name="jstag" type="object">需要分析的对像标签</param>
    ///<param name="srcstr" type="string">对像的属性</param>
    ///<param name="mrz" type="string">默认值</param>
    var result = mrz;
    var jssrcvalue = jstag.getAttribute(srcstr);

    if (checknull(jssrcvalue)) {

        result = jssrcvalue;
    }

    return result;
}
function checknull(sour) {
    ///<summary>检测sour是否为underfined,或null,是返回false,不是返回true</summary>
    ///<param name="sour" type="any">源值,为underfined,或null,是返回false,不是返回true</param>
    return ((sour != null) && (sour != undefined));
}
  • 检测是否有值,有返回值,没有返回默认值
function renullval(sour, mrz) {
    ///<summary>读值,如果没有值,或值为异常,则返回mrz,如果没有mrz则返回""</summary>
    ///<param name="sour" type="string">源值,如果为异常则返回mrz</param>
    ///<param name="mrz" type="string">默认值,如果没有则返回""</param>
    var result = "";
    if ((mrz != null) && (mrz != undefined)) {
        result = mrz;
    }
    if ((sour != null) && (sour != undefined)) {
        result = sour;
    }
    return result;
}
  • 在线与离线

    通过navigator.onLine来判断网络的连接状态,返回true和false;online和offline事件可以侦听连接状态的切换时机,有document.body触发。

  • 安全类型检测

JavaScript内置类型检测并不可靠,Safari某些版本(<4)typeof正则表达式返回为function,建议使用Object.prototype.toString.call()方法检测数据类型

        function isArray(value){
            return Object.prototype.toString.call(value)==="[object Array]";
        }
        function isFunction(value){
            return Object.prototype.toString.call(value)==="[object Function]";
        }
        function isString(value){
            return Object.prototype.toString.call(value)==="[object String]";
        }
        function isObject(value){
            return Object.prototype.toString.call(value)==="[object Object]";
        }
  • 生成随机数
function randomNum(minNum, maxNum) {//包含minNum和maxNum
    switch (arguments.length) {
        case 1:
            return parseInt(Math.random() * minNum + 1, 10);
            break;
        case 2:
            return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
            break;
        default:
            return 0;
            break;
    }
}
  • 根据属性值排序
function createComparisonFunction(propertyName) {
    return function(object1, object2){
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
        if (value1 < value2){
            return -1;
        } else if (value1 > value2){
            return 1;
        } else {
            return 0;
        }
    };
} 
var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];
data.sort(createComparisonFunction("name"));
alert(data[0].name); //Nicholas
data.sort(createComparisonFunction("age"));
alert(data[0].name); //Zachary 
  • 数组去重
    function unique(a){
        var res=[];
        for(var i=0,len=a.length;i<len;i++){
            for(var j=i+1;j<len;j++){
                if(a[i]===a[j]){
                    j=++i;
                }
            }
            res.push(a[i]);
        }
        return res;
    }
  •  阻止事件冒泡
    <div id="box">
         <div id="box1"></div>
    </div>
    <script>
    $(function(){
        $("#box").on('click',function(){
            console.log(1);
        })
        $("#box1").on('click',function(event){
            console.log(2);
             event.stopPropagation();    //  阻止事件冒泡
        })
    })
    </script>

 

posted @ 2020-03-18 02:25  sjzhen  阅读(83)  评论(0编辑  收藏  举报