My Octopress Blog

A blogging framework for hackers.

Javascript Tricks(js中的小技巧)

| Comments

检验javascript的对象类型

for example:

1
console.log(Object.prototype.toString.call("ss") == "[object String]"); //true

打乱一个数组

1
2
3
4
var list = [1,2,3,4, 7, 8, 9];
list = list.sort(function(a, b) {
    return Math.random() - 0.5;
});

快速执行一个function

1
(function(){console.log("Hello!")})();

在数字前面加上0

1
2
3
function PrefixInteger(num, length) {
    return (Array(length).join('0') + num).slice(-length);
}

一个关于setTimeout和setTimeInterval的小问题

1下面哪个会先打印出来?setInterval会被执行嘛?

1
2
3
4
5
6
7
8
9
var interval = 500;

setInterval(function(){
    console.log("setInterval");
}, interval);

setTimeout(function(){
    console.log("setTimeout");
}, interval*10);

setTimeout会打印出来,setInterval会被执行

2下面哪个会先打印出来?setTimeout会被执行嘛?

1
2
3
4
5
6
7
8
9
var interval = 500;

setTimeout(function(){
    console.log("setTimeout");
}, interval);

setInterval(function(){
    console.log("setInterval");
}, interval*10);

会一直执行setINterval,不会执行setTimeout

出现这种情况是因为javascript在一个上下文里是顺序执行,而调用timeout或者interval的时候,会自动把里面的回调函数加入到一个等待列,只有把上下文的代码执行完才会执行这两个回调函数.

随机得到一个数组的值

1
var index = Math.floor(Math.Random()*arrayLength);

根据非字母数字分隔一个字符串

1
var arr = str.split(/\W/);

可以用占位符来输出字符串

1
console.log('%s', 'hello world') //hello world

在表单submit提交之后进行操作,submit(Jquery)的另一种使用方法

1
2
3
4
5
6
7
8
9
10
11
<form id="iform"></form>
$("#iform").submit(function(e){
  e.preventDefault();//阻止事件冒泡,二次提交
    this.submit();//调用原生方法提交表单
    $.ajax({//在表单提交之后进行另一个ajax请求
      url: '',
        success: function(data) {
          console.log(data);
        }
    });
});

Comments