Record some javascript methods

Posted by Jxx on October 29, 2018

通过ajax获取页面中指定容器内的代码块

//方法一
success: function(result) {
            var Obj = $("<code></code>").append(result);
            var $html = $(".page-wrapper", Obj);
            var value = $html.html();
            $("#mainPage").html(value);
        }
        
//方法二
success: function(result) {
            var reg = /[\s\S]*<\/body>/g;
            var html = reg.exec(result)[0];
            //然后用filter来筛选对应块对象,如:class='page-wrapper'
            var page = $(html).filter(".page-wrapper");
            var value = page.html();
            $("#mainPage").html(value);
        }

截取页面中载入的js文件

  • result 是通过ajax获取的html页面
  • trimSpace()和getMultiScripts()函数用法如下所述
// 第一步:匹配加载的页面中是否含有js
var regDetectJs = /<script(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig;
var jsContained = result.match(regDetectJs);

// 第二步:如果包含js,则一段一段的取出js再加载执行
if (jsContained) {
    // 分段取出js正则(这一步感觉没什么用,删了)
    // var regGetJS = /<script(.|\n)*?>((.|\n|\r\n)*)?<\/script>/im;

    // 按顺序分段执行js
    var jsNums = jsContained.length;
    var sname = [];
    for (var i = 0; i < jsNums; i++) {
        //(同上,删了)
        // var jsSection = jsContained[i].match(regGetJS);
        // var script = jsSection[0];
        var script = jsContained[i];
        var arr = script.split("../../");
        if (arr.length != 1) {
            var sarr = arr[1].split('"></script>');
            sname[i] = sarr[0];
        }
    }
    trimSpace(sname);
    getMultiScripts(sname,'./');
}

如果array中的元素存在空字符串’‘、undefined、null和empty,则去掉该元素

function trimSpace(array) {
    for (var i = 0; i < array.length; i++) {
        if (array[i] == " " || array[i] == null || typeof(array[i]) == "undefined") {
            array.splice(i, 1);
            i = i - 1;
        }
    }
    return array;
}

jQuery载入多个js文件

  • @param arr js路径集合{Array}
  • @param path js父级路径{String}
function getMultiScripts(arr, path) {
    //将数组arr中的元素转换到另一个数组中
    var _arr = $.map(arr, function(scr) {
        //通过 HTTP GET 请求载入并执行拼接后的 JavaScript 文件
        return $.getScript((path || "") + scr);
    });
    _arr.push($.Deferred(function(deferred) {
        //解决递延对象,并根据给定的参数调用任何完成的回调函数。
        $(deferred.resolve);
    }));
    
    //提供一种方法来执行一个或多个对象的回调函数,延迟对象通常表示异步事件。
    return $.when.apply($, _arr);
}

每隔两行tr添加背景颜色

var trAddBg = function (){
    var trA =  $('tbody').children("tr");
    trA.each(function(i){
        if((i % 4 == 2) || (i % 4 == 3)) {
            $(trA[i]).addClass("bg");
        }
    })
}

逐字显示效果

<p id="aa"></p>
<div style="display:none" id="w">今天的雨跟依萍找他爸要钱的那天一样大</div>
<script type="text/javascript">
    window.onload = type;
    var index = 0;
    var word = $("#w").html();
    function type(){
        $("#aa").html(word.substring(0,index++));
        if(index > word.length) {
            return;
        } else {
            setTimeout(type,50);
        };
    }
</script>

获取键码

$("body").keyup(function(event) {
    //处理键盘事件
    var myEvent = event || window.event;
    var keyCode = myEvent.which || myEvent.keyCode || myEvent.charCode;
    console.log(keyCode);
})

XMLHttpRequest 对象的三个重要的属性

XMLHttpRequest 对象的三个重要的属性 当 readyState 等于 4 且状态status为 200 时,表示响应已就绪

var test;  
if(window.XMLHttpRequest){  
    test = new XMLHttpRequest();  
}else if(window.ActiveXObject){  
    test = new window.ActiveXObject();  
}else{  
    alert("请升级至最新版本的浏览器");  
}  
if(test !=null){  
    test.open("GET","week.json",true);  
    test.send(null);  
    test.onreadystatechange=function(){  
        if(test.readyState==4&&test.status==200){  
            console.log("页面已就绪");
            var obj = JSON.parse(test.responseText);  
            console.log("json数据存放在responseText里")  
        }  
    };  
  
}