这些年,我收集的JavaScript代码(转)

一、取URL中的参数

function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)')
                    .exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

二、正则分组

ar 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=/<img\ssrc='(.*?)'\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("\n".charCodeAt(0));//10
console.log(String.fromCharCode(65));//A

 

非原创,原文地址:http://www.cnblogs.com/jscode/archive/2012/07/25/2605395.html

posted on 2012-07-25 22:15  Xiaofu915  阅读(556)  评论(0)    收藏  举报

导航