zoukankan      html  css  js  c++  java
  • javascript常用代码大全

    http://caibaojian.com/288.html     原文链接

    jquery选中radio
    
    //如果之前有选中的,则把选中radio取消掉
    $("#tj_cat .pro_category").each(function()
    {
    if ($(this).attr('checked')){
    $(this).attr('checked' ,false);
    }
    });
    //获取被选中的标签的值
    radio:(checkbox和这个一样)
    var val=$('input:radio[name="sex"]:checked').val(); //下面的写法也可以 //var val=$('.sexclass:checked').val(); select: var sel_val=$("select[id='shuini'] option:selected").val(); //下面的写法也可以 //var sel_val=$('.must_write option:selected').val(); //var sel_val=$('#shuini option:selected').val(); //var sel_val=$("select[name='shuini1'] option:selected").val();
    jquery获取高度
    
    网页可见区域宽: document.body.clientWidth
    网页可见区域高: document.body.clientHeight
    网页可见区域宽: document.body.offsetWidth (包括边线的宽)
    网页可见区域高: document.body.offsetHeight (包括边线的高)
    网页正文全文宽: document.body.scrollWidth
    网页正文全文高: document.body.scrollHeight
    网页被卷去的高: document.body.scrollTop
    网页被卷去的左: document.body.scrollLeft
    网页正文部分上: window.screenTop
    网页正文部分左: window.screenLeft
    屏幕分辨率的高: window.screen.height
    屏幕分辨率的宽: window.screen.width
    屏幕可用工作区高度: window.screen.availHeight
    屏幕可用工作区宽度: window.screen.availWidth
    jquery获取浏览器显示区域的高度 : $(window).height();
    获取浏览器显示区域的宽度 :$(window).width();
    获取页面的文档高度 :$(document).height();
    获取页面的文档宽度 :$(document).width();获取滚动条到顶部的垂直高度 :$(document).scrollTop();
    获取滚动条到左边的垂直宽度 :$(document).scrollLeft();计算元素位置和偏移量
    offset方法是一个很有用的方法,它返回包装集中第一个元素的偏移信息。默认情况下是相对body的偏移信息。结果包含 top和left两个属性。
    offset(options, results)
    options.relativeTo  指定相对计 算偏移位置的祖先元素。这个元素应该是relative或absolute定位。省略则相对body。
    options.scroll  是否把 滚动条计算在内,默认TRUE
    options.padding  是否把padding计算在内,默认false
    options.margin   是否把margin计算在内,默认true
    options.border  是否把边框计算在内,默认true
    jquery插件中的参数相加
    
    var a = '4';
    var b = 1+parseInt(a);
    alert(b);
    2013.6.28日更新
    
    JS除数取整
    
    以下总结了在js中小数取整的一些方法,需要的朋友可以参考一下。
    
    1.丢弃小数部分,保留整数部分
    js代码:parseInt(5/2)
    2.向上取整,有小数就整数部分加1
    js代码: Math.ceil(5/2)
    3,四舍五入.
    js代码: Math.round(9/2)
    4,向下取整
    js代码: Math.floor(5/2)
    2013.6.9更新
    
    js全选
    
    <SCRIPT type="text/javascript">
    $(document).ready(function() {
        $("#checkedAll").click(function(){
            //try{
            if($(this).attr("checked") == true){ //check all
                $("input[name='checkbox_name']").each(function(){
                    $(this).attr("checked",true);
                });
            }else{
                $("input[name='checkbox_name']").each(function(){
                    $(this).attr("checked",false);
                });
            }
            //}catch(e){
            //alert(e.description+e.name+e.message)
            //}
        });
    });
    </SCRIPT>
        <div class="components-list">
            <input type="checkbox" name="checkbox_name" id="checkbox_name_1" />1<br />
            <input type="checkbox" name="checkbox_name" id="checkbox_name_2" />2<br />
            <input type="checkbox" name="checkbox_name" id="checkbox_name_3" />3<br />
            <input type="checkbox" name="checkbox_name" id="checkbox_name_4" />4<br />
            <input type="checkbox" name="checkedAll" id="checkedAll"/>全选/取消全选
        </div>
    js取整数
    
    正整数
    
    var ex = /^d+$/;
    if (ex.test(str)) {
    // 则为整数
    }
    正负整数
    
    /^(-|+)?d+$/.test(value)
    2013.7.8更新
    
    jQuery获取Select选择的Text和Value:
    
    语法解释:
    1. $("#select_id").change(function(){//code...});   //为Select添加事件,当选择其中一项时触发
    2. var checkText=$("#select_id").find("option:selected").text();  //获取Select选择的Text
    3. var checkValue=$("#select_id").val();  //获取Select选择的Value
    4. var checkIndex=$("#select_id ").get(0).selectedIndex;  //获取Select选择的索引值
    5. var maxIndex=$("#select_id option:last").attr("index");  //获取Select最大的索引值
    jQuery设置Select选择的 Text和Value:
    语法解释:
    1. $("#select_id ").get(0).selectedIndex=1;  //设置Select索引值为1的项选中
    2. $("#select_id ").val(4);   // 设置Select的Value值为4的项选中
    3. $("#select_id option[text='jQuery']").attr("selected", true);   //设置Select的Text值为jQuery的项选中
    2013.7.11更新
    
    jquery获取数字
    
    var i = 'abc123';
    i.match(/d+/g);
    或者
    
    i.match(/[0-9]*$/);(来源)
    jquery的正则表达方式很有用哦,查看更多方法
    
    jquery判断两次点击对象是否是同一对象
    
    点击一次之后,在这个TD上的data上存个值,为下次比较使用
    $(".td").bind("click",function(){
        if($(this).data("lastClick")){
            alert("相同");
        }else{  
            alert("不同");
            $(".td").removeData("lastClick");
            $(this).data("lastClick",true);
        }
    });
    js处理字符串的常见操作
    
    split() 方法
    功能:使用一个指定的分隔符把一个字符串分割存储到数组
    例子:
    
    str=”jpg|bmp|gif|ico|png”;
    arr=str.split(”|”);
    //arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的数组
    join() 方法
    功能:使用您选择的分隔符将一个数组合并为一个字符串
    例子:
    
    var myList=[”jpg”,”bmp”,”gif”,”ico”,”png”]
    var portableList=myList.join(”|”);
    //结果是jpg|bmp|gif|ico|png
    substring() 方法
    功能:字符串截取,比如想从”MinidxSearchEngine”中得到”Minidx”就要用到substring(0,6)
    
     
    
    indexOf()
    功能:返回字符串中匹配子串的第一个字符的下标
    
    var myString=”JavaScript”;
    var w=myString.indexOf(”v”);   //2
    var x=myString.indexOf(”S”);    //4
    var y=myString.indexOf(”Script”);    // 4
    var z=myString.indexOf(”key”);    // -1(不存在)
    以下内容来自“草根程序猿”一系列的文章,:这些年,我收集的JavaScript代码(一) (2)
    
    非常感谢,本人最近也学习了一个多月的javascript技术,有空也会发表一些文章的。
    
    一、取URL中的参数
    
    function getParameterByName(name) {
        var match = RegExp('[?&]' + name + '=([^&]*)')
                        .exec(window.location.search);
        return match && decodeURIComponent(match[1].replace(/+/g, ' '));
    }
    二、正则分组
    
    var testStr="<div><img src='/a.jpg' alt='' /><span>test</span><img src='/b.jpg' alt='' /><span>TTest</span><img src='/c.png' alt='' /></div>";
    var reg=/<imgssrc='(.*?)'s+alt=''s*/>/g;
    var match=reg.exec(testStr),results=[];
    while(match != null){
        results.push(match[1]);
        match=reg.exec(testStr);
    }
    console.log(results);
    /*
    Array ["/a.jpg", "/b.jpg", "/c.png"]
    */
    三、为什么parseInt(1/0,19)的结果为18
    
    1/0的结果是Infinity,所以parseInt(1/0,19)等同于parseInt("Infinity",19),而在19进制中:
    
     19进制       10进制
    --------------------
       0            0
       1            1
       2            2
       3            3
       4            4
       5            5
       6            6
       7            7
       8            8
       9            9
       a            10
       b            11
       c            12
       d            13
       e            14
       f             15
       g            16
       h            17
       i             18
    i表示18,所以parseInt(1/0,19)的结果为18。
    
    四、jQuery中获取设置checkbox选中状态
    
    由于在jQuery1.6以后.attr("checked")的返回结果是 checked,所以一般用下面两种方法获取选中状态:
    
    $("#checkboxID").is(":checked");
    //jQuery 1.6 +
    $("#checkboxID").prop("checked");
    选中checkbox:
    
    //jQuery 1.6+
    $("#checkboxID").prop("checked", true);
    $("#checkboxID").prop("checked", false);
    
    //jQuery 1.5 and below
    $('#checkboxID').attr('checked','checked')
    $('#checkboxID').removeAttr('checked')
    五、jQuery中判断一个元素是否存在
    
    if ($(selector).length)
    六、用JavaScript对URL进行编码
    
    var myUrl = "http://example.com/index.html?param=1&anotherParam=2";
    var myOtherUrl = "http://example.com/index.html?url=" + encodeURIComponent(myUrl);
    七、jQuery中event.preventDefault() 与 return false 的区别
    
    //Demo1 event.preventDefault()
    $('a').click(function (e) {
        // custom handling here
    
        e.preventDefault();
    });
    
    //Demo2 return false
    $('a').click(function () {
        // custom handling here
    
        return false;
    };
    jQuery中return false相当于同时调用e.preventDefault 和 e.stopPropagation。
    
    要注意的是,在原生js中,return false仅仅相当于调用了e.preventDefault。
    
    八、JavaScript检查一个字符串是否为空最简单的方法
    
    if (strValue) {
        //do something
    }
    九、用JavaScript添加和删除class
    
    //Add Class
    document.getElementById("MyElement").className += " MyClass";
    
    //Remove Class
    document.getElementById("MyElement").className = document.getElementById("MyElement").className.replace(/(?:^|s)MyClass(?!S)/,'');
    十、在jQuery中取消一个ajax请求
    
    var xhr = $.ajax({
        type: "POST",
        url: "test.php",
        data: "name=test",
        success: function(msg){
           alert( msg );
        }
    });
    
    //取消请求
    xhr.abort()
    要注意的是,在ajax请求未响应之前可以用xhr.abort()取消,但如果请求已经到达了服务器端,这样做的结果仅仅是让浏览器不再监听这个请求的响应,但服务器端仍然会进行处理。
    
    十一、JavaScript删除数组中的项 delete vs splice
    
    var myArray=["a","b","c"];
    delete myArray[0];
    for(var i=0,j=myArray.length;i<j;i++){
        console.log(myArray[i]);
        /*
        undefined
        b
        c
        */
    }
    
    var myArray2=["a","b","c"];
    myArray2.splice(0,1);
    for(var i=0,j=myArray2.length;i<j;i++){
        console.log(myArray2[i]);
        /*
        b
        c
        */
    }
    上面的代码已经说明区别了,一个是设置为undefined,一个是真正的删除了。
    
    十二、JavaScript中16进制与10进制相互转换
    
    var sHex=(255).toString(16);//ff
    var iNum=parseInt("ff",16);//255
    十三、JavaScript多行字符串
    
    如何在JavaScript中方便地写一个多行字符串呢,有三种方案,你自己选吧:
    
    //one
    var testHtml="a"+
    "b"+
    "c";
    
    //two
    var testHtml2="a
    b
    c";
    
    //three
    var testHtml3=["a",
    "b",
    "c"].join("");
    十四、JavaScript中!!操作符是什么
    
    console.log(!!10);//true
    console.log(!!0);//false
    console.log(!!"abc");//true
    console.log(!!"");//false
    简单地说就是把右侧的值转为bool值
    
    十五、JavaScript实现endsWith
    
    String.prototype.endsWith = function(suffix) {
        return this.indexOf(suffix, this.length - suffix.length) !== -1;
    };
    
    //or
    function endsWith(str, suffix) {
        return str.indexOf(suffix, str.length - suffix.length) !== -1;
    }
    十六、JavaScript中克隆对象
    
    function clone(obj) {
        // Handle the 3 simple types, and null or undefined
        if (null == obj || "object" != typeof obj) return obj;
    
        // Handle Date
        if (obj instanceof Date) {
            var copy = new Date();
            copy.setTime(obj.getTime());
            return copy;
        }
    
        // Handle Array
        if (obj instanceof Array) {
            var copy = [];
            for (var i = 0, var len = obj.length; i < len; ++i) {
                copy[i] = clone(obj[i]);
            }
            return copy;
        }
    
        // Handle Object
        if (obj instanceof Object) {
            var copy = {};
            for (var attr in obj) {
                if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
            }
            return copy;
        }
    
        throw new Error("Unable to copy obj! Its type isn't supported.");
    }
    十七、JavaScript字符与ASCII码间的转换
    
    console.log("
    ".charCodeAt(0));//10
    console.log(String.fromCharCode(65));//A
    十八、JavaScript中浮点数的相等判断不能用 ==
    
    console.log(0.1+0.2 == 0.3);//false
    console.log(Math.abs(0.1+0.2 - 0.3) < 0.000001);//true
    如上所示,浮点数相等判断要用差的绝对值小于某一个数来判断。至于原因可以参考这里:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
    
    十九、JavaScript中base64编码
    
    var Base64 = {
    
    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    
    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
    
        input = Base64._utf8_encode(input);
    
        while (i < input.length) {
    
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
    
            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;
    
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }
    
            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
    
        }
    
        return output;
    },
    
    // public method for decoding
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
    
        input = input.replace(/[^A-Za-z0-9+/=]/g, "");
    
        while (i < input.length) {
    
            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));
    
            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;
    
            output = output + String.fromCharCode(chr1);
    
            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }
    
        }
    
        output = Base64._utf8_decode(output);
    
        return output;
    
    },
    
    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/
    /g,"
    ");
        var utftext = "";
    
        for (var n = 0; n < string.length; n++) {
    
            var c = string.charCodeAt(n);
    
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
    
        }
    
        return utftext;
    },
    
    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
    
        while ( i < utftext.length ) {
    
            c = utftext.charCodeAt(i);
    
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
    
        }
    
        return string;
    }
    }
    
    //encode
    Base64.encode("Test"); //VGVzdA==
    
    //decode
    Base64.decode("VGVzdA=="); // Test
    二十、jQuery中each跟map的区别
    each跟map都可以用来遍历Array或Object,区别是each不改变原来的Array或Object,map是操作给定的Array或Object返回一个新Array或Object。Demo:
    
    var items = [1,2,3,4];
    
    $.each(items, function() {
      alert('this is ' + this);//alert 1,2,3,4
    });
    
    var newItems = $.map(items, function(i) {
      return i + 1;
    });
    // newItems is [2,3,4,5]
    map会占用更多的内存,所以如果只是遍历建议用each。
    
    二十一、判断一个对象是否为数组
    
    function isArray(obj){
        return Object.prototype.toString.call(obj) == "[object Array]";
    }
    不能用instanceof 和 constructor来判断,原因参考:http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/
    
    二十二、通过原型继承创建一个新对象
    
    function inherit(p){
        if(!p){
            throw TypeError("p is not an object or null");
        }
        if(Object.create){
            return Object.create(p);
        }
        var t=typeof p;
        if(t !== "object" && t !== "function"){
            throw TypeError("p is not an object or null");
        }
        function f(){};
        f.prototype=p;
        return new f();
    }
    注意:这种方法不能处理参数为null的情况。
    
    一、JavaScript跨平台事件
    
    对于跨平台事件我们一般这么写(只例举添加事件):
    
    function addEventHandler(oTarget, sEventType, fnHandler){
        if(oTarget.addEventListener){
            oTarget.addEventListener(sEventType,fnHandler,false);
        } else if(oTarget.attachEvent){
            oTarget.attachEvent("on"+sEventType,fnHandler);
        } else{
            oTarget["on"+sEventType]=fnHandler;
        }
    }
    那么下面这段代码的效果是什么样的呢?
    
    <div id="test">Test</div>
    ...
    var oDiv=document.getElementById("test");
    addEventHandler(oDiv,"mouseover",function(){
        alert("over "+this.id);
    });
    由于IE的this问题,在IE中果断地弹出了 over undefined,所以跨平台的事件更好的写法是这样的:
    
    function addEventHandler(oTarget, sEventType, fnHandler){
        if(oTarget.addEventListener){
            oTarget.addEventListener(sEventType,fnHandler,false);
        } else if(oTarget.attachEvent){
            oTarget.attachEvent("on"+sEventType,function(){
                return fnHandler.call(oTarget,window.event);
            });
        } else{
            oTarget["on"+sEventType]=fnHandler;
        }
    }
    二、合并两个Array并去掉重复项
    
    Array.prototype.unique = function() {
        var a = this.concat();
        for(var i=0; i<a.length; ++i) {
            for(var j=i+1; j<a.length; ++j) {
                if(a[i] === a[j])
                    a.splice(j, 1);
            }
        }
    
        return a;
    };
    
    //Demo
    var array1 = ["a","b"];
    var array2 = ["b", "c"];
    var array3 = array1.concat(array2).unique();
    // ["a","b","c"]
    三、typeof === "undefined" vs. != null
    
    if(typeof neverDeclared == "undefined") //no errors
    
    if(neverDeclared == null) //throws ReferenceError: neverDeclared is not defined
    so,typeof === "undefined" is better!
    
    四、setTimeout(fn, 0)的意义
    
    浏览器同时要做很多事,这些事情以队列的方式存在,执行JavaScript只是其中之一,setTimeout(fn, 0)表面上看是立即执行的意思,但实际上只是在浏览器事件队列中添加了一个新的事件,由于队列是先进先出,所以fn会等等到当前队列中的事件执行完后再执 行。由于JavaScript的定时器回调函数是异步执行的,所以产生的效果就是等页面上同步事件(包括页面渲染与同步JS代码)执行完之后再执行。
    
    一个简单的示例:
    
    <script type="text/javascript">
        //one
        document.getElementById("imgTest").style.borderBottom="5px solid #000";
    
        //two
        setTimeout(function(){
            document.getElementById("imgTest").style.borderBottom="5px solid #000";
        }, 0);
    </script>
    <img src="http://jscode.chinacxy.com/img_lib/m_400_600_01.jpg" alt="javascript常用代码大全" id="imgTest" alt=""/>
    one会报错,因为页面执行到这里时还没有img,但two却可以。
    
    五、增强版取URL中的参数
    
    function getQueryString() {
      var result = {}, queryString = location.search.substring(1),
          re = /([^&=]+)=([^&]*)/g, m;
    
      while (m = re.exec(queryString)) {
        result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
      }
    
      return result;
    }
    
    // demo
    var myParam = getQueryString()["myParam"];
    六、检查一个object是否是jQuery object
    
    if(obj instanceof jQuery)
    七、检查一个数是否为整数或浮点数
    
    function isInt(n) {
       return typeof n === 'number' && n % 1 == 0;
    }
    
    // or ,this support ie3
    function isInt(n) {
       return typeof n === 'number' && parseFloat(n) == parseInt(n, 10) && !isNaN(n);
    }
    
    function isFloat (n) {
      return n===+n && n!==(n|0);
    }
    八、用JavaScript添加style节点
    
    var css = 'h1 { background: red; }',
        head = document.getElementsByTagName('head')[0],
        style = document.createElement('style');
    
    style.type = 'text/css';
    if(style.styleSheet){
        style.styleSheet.cssText = css;
    }else{
        style.appendChild(document.createTextNode(css));
    }
    head.appendChild(style);
    九、如何跳出双重循环
    
    function foo ()
    {
        dance:
        for(var k = 0; k < 4; k++){
            for(var m = 0; m < 4; m++){
                if(m == 2){
                    break dance;
                }
            }
        }
    }
    十、把一个Array追加到另一个Array上
    
    var a=[1,2],b=[3,4,5];
    
    a.push.apply(a,b);
    
    /*a: [1, 2, 3, 4, 5]*/
    十一、用jQuery把页面上的一个tag换成另一个tag
    
    如把页面上所有的code换为pre:
    
    <code> A </code>
    <code> B </code>
    <code> C </code>
    
    //change to
    <pre> A </pre>
    <pre> A </pre>
    <pre> A </pre>
    jQuery代码:
    
    $('code').contents().unwrap().wrap('<pre/>');
    
    //or
    $('code').replaceWith(function(){
        return $("<pre />").append($(this).contents());
    });
    十二、取数组中的最小值和最大值
    
    var arr = new Array();
    arr[0] = 100;
    arr[1] = 0;
    arr[2] = 50;
    
    var min = Math.min.apply(null, arr),
        max = Math.max.apply(null, arr);
    十三、取两个数组交集
    
    /* finds the intersection of 
     * two arrays in a simple fashion.  
     *
     * PARAMS
     *  a - first array, must already be sorted
     *  b - second array, must already be sorted
     *
     * NOTES
     *
     *  Should have O(n) operations, where n is 
     *    n = MIN(a.length(), b.length())
     */
    function arrayIntersection(a, b)
    {
      var ai=0, bi=0;
      var result = new Array();
    
      while( ai < a.length && bi < b.length )
      {
         if      (a[ai] < b[bi] ){ ai++; }
         else if (a[ai] > b[bi] ){ bi++; }
         else /* they're equal */
         {
           result.push(a[ai]);
           ai++;
           bi++;
         }
      }
    
      return result;
    }
    
    console.log(arrayIntersection([1,2,3],[2,3,4,5,6]));//[2,3]
    注释中已经说明了,传入的数组要已经排过序的。
    
    十四、统计一个字符串中某段子串出现的次数
    
    var temp = "This is a string.";
    
    var count = temp.match(/is/g).length;
    十五、方法返回多个值
    
    //One
    var mValues= function(){  
        var a ="a"; 
        var b = "b";   
        return [a, b];  
    };
    
    var values= mValues();
    var valOne= values[0];
    var valTwo = values[1];
    
    //Two
    var mValues= function(){  
        var a= "a";
        var b = "b";    
        return {
            'a': a,
            'b': b
        };  
    };
    
    var values= mValues();
    var valOne= values.a;
    var valTwo = values.b;
    十六、Array迭代器
    
    function createIterator(x) {
        var i = 0;
    
         return function(){
           return x[i++];
        };
    }
    
    var iterator=createIterator(['a','b','c','d','e','f','g']);
    var current;
    while(current=iterator())
    {
        console.log(current);
    }
    注意,如果数组中有0、false""null、NaN迭代器将会停止。
    
    十七、根据日计算年龄
    
    function getAge(dateString) {
        var today = new Date();
        var birthDate = new Date(dateString);
        var age = today.getFullYear() - birthDate.getFullYear();
        var m = today.getMonth() - birthDate.getMonth();
        if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
            age--;
        }
        return age;
    }
    console.log(getAge("2005,8,1"));//6
    十八、判断当前页面是否被放入了iframe中
    
    if(self==top){
          //not in iframe
    }else{
          //in iframe
    }
    这段代码可以用来防止网页被放入iframe中,不过如果别人定义了self和top变量覆盖了浏览器默认值可能会失效。
    
    十九、把arguments转换为Array
    
    var args = Array.prototype.slice.call(arguments, 0);
    二十、日期格式化
    来源:javascript日期格式化函数,跟C#中的使用方法类似
    
    Date.prototype.toString=function(format,loc){
        var time={};
        time.Year=this.getFullYear();
        time.TYear=(""+time.Year).substr(2);
        time.Month=this.getMonth()+1;
        time.TMonth=time.Month<10?"0"+time.Month:time.Month;
        time.Day=this.getDate();
        time.TDay=time.Day<10?"0"+time.Day:time.Day;
        time.Hour=this.getHours();
        time.THour=time.Hour<10?"0"+time.Hour:time.Hour;
        time.hour=time.Hour<13?time.Hour:time.Hour-12;
        time.Thour=time.hour<10?"0"+time.hour:time.hour;
        time.Minute=this.getMinutes();
        time.TMinute=time.Minute<10?"0"+time.Minute:time.Minute;
        time.Second=this.getSeconds();
        time.TSecond=time.Second<10?"0"+time.Second:time.Second;
        time.Millisecond=this.getMilliseconds();
        time.Week=this.getDay();
    
        var MMMArrEn=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
        var MMMArr=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
        var WeekArrEn=["Sun","Mon","Tue","Web","Thu","Fri","Sat"];
        var WeekArr=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
    
        var oNumber=time.Millisecond/1000;
    
        if(format!=undefined && format.replace(/s/g,"").length>0){
            if(loc!=undefined && loc =="en"){
                MMMArr=MMMArrEn.slice(0);
                WeekArr=WeekArrEn.slice(0);
            }
            format=format
                .replace(/yyyy/ig,time.Year)
                .replace(/yyy/ig,time.Year)
                .replace(/yy/ig,time.TYear)
                .replace(/y/ig,time.TYear)
                .replace(/MMM/g,MMMArr[time.Month-1])
                .replace(/MM/g,time.TMonth)
                .replace(/M/g,time.Month)
                .replace(/dd/ig,time.TDay)
                .replace(/d/ig,time.Day)
                .replace(/HH/g,time.THour)
                .replace(/H/g,time.Hour)
                .replace(/hh/g,time.Thour)
                .replace(/h/g,time.hour)
                .replace(/mm/g,time.TMinute)
                .replace(/m/g,time.Minute)
                .replace(/ss/ig,time.TSecond)
                .replace(/s/ig,time.Second)
                .replace(/fff/ig,time.Millisecond)
                .replace(/ff/ig,oNumber.toFixed(2)*100)
                .replace(/f/ig,oNumber.toFixed(1)*10)
                .replace(/EEE/g,WeekArr[time.Week]);
        }
        else{
            format=time.Year+"-"+time.Month+"-"+time.Day+" "+time.Hour+":"+time.Minute+":"+time.Second;
        }
        return format;
    }
    
    var d=new Date();
    console.log(d.toString());    //2012-7-27 9:26:52
    console.log(d.toString(""));    //2012-7-27 9:26:52
    console.log(d.toString("yyyy-MM-dd HH:mm:ss"));    //2012-07-27 09:26:52
    console.log(d.toString("yyyy年MM月dd日 HH:mm:ss"));    //2012年07月27日 09:26:52
    console.log(d.toString("yyyy-MM-dd HH:mm:ss fff"));    //2012-07-27 09:26:52 237
    console.log(d.toString("yyyy年 MMM dd EEE"));    //2012年 七月 27 星期五
    console.log(d.toString("yyyy MMM dd EEE","en"));    //2012 Jul 27 Fri
    二十一、JavaScript正则中test小用法
    
    var str="a12b123c1234e12345";
    var reg=/a(d{2})b(d{3})c(d{4})/;
    reg.test(str);
    console.log(RegExp.$1,RegExp.$2,RegExp.$3,RegExp.$4);
    // output:12 123 1234
    二十二、JavaScript判断浏览器类型及主版本
    
    function getBrowserInfo(){
        var Sys = {};
        var ua = navigator.userAgent.toLowerCase();
        if (window.ActiveXObject){
            Sys.b="ie";
            Sys.v =parseInt(ua.match(/msie ([d.]+)/)[1]);
        }
        else if (document.getBoxObjectFor){
            Sys.b="firefox";
            Sys.v =parseInt(ua.match(/firefox/([d.]+)/)[1]);
        }
        else if (window.MessageEvent && !document.getBoxObjectFor){
            Sys.b="chrome";
            Sys.v == parseInt(ua.match(/chrome/([d.]+)/)[1]);
        }
        else if (window.opera){
            Sys.b="opera";
            Sys.v == parseInt(ua.match(/opera.([d.]+)/)[1]);
        }
        else if (window.openDatabase){
            Sys.b="safari";
            Sys.v == parseInt(ua.match(/version/([d.]+)/)[1]);
        }
        return Sys;
    }
    
    var bi=getBrowserInfo();
    document.write("Browser:"+bi.b+"    Version:"+bi.v);//Browser:ie Version:10
  • 相关阅读:
    前台的ID不能与后台的变量重命名,否则发布后会出现 Ambiguous match found.
    Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划
    Scala入门指南
    大数据的关键技术
    大数据技术的发展趋势
    大数据——大价值、大机遇、大变革(全彩)
    大数据与云计算
    Android系统源代码情景分析
    Android硬件抽象层(HAL)概要介绍和学习计划
    Android进程间通信(IPC)机制Binder简要介绍和学习计划
  • 原文地址:https://www.cnblogs.com/hupan508/p/5074879.html
Copyright © 2011-2022 走看看