Javascript
文章將不會照內容系統的排序,只會將我認為重要的資料放入。
javascript tip
javascript 可以說是非常萬能、而且語法很寬鬆,所以有很多特殊的寫法與技巧。
airbnb 的代碼規範
https://github.com/airbnb/javascript
如果你是獨自學習 javascript 沒有前輩的規範指導,那麼這篇可以帶你少走很多彎路。
參考資料
非常推薦去看得資料,本篇的內容大部分都是從這些文章取得的。
推薦安裝 node.js
javascrupt 的後端,也方便做測試。
arguments 接收所有變數
當函式接收到參數時,會存入arguments成array
  function print() {
    for (var i in arguments) {
      console.log(i, ":", arguments[i]);
    }
  }
  print(3, 2.71828, "hello");
將會輸出 :
  0 : 3
  1 : 2.71828
  2 : hello
Module模式
var Calculator = function (a) {
    //private function
    var ahref = document.getElementById(a);
    return {
        //public
        add: function (x, y) {
            var val = x + y;
            ahref.innerHTML = val;
        }
    };
};
// 使用
var calculator = new Calculator('a');
calculator.add(2, 2);
一些常用的
新增元素
    var txt1 = "<p>Text.</p>";               // Create element with HTML  //方法一
    var txt2 = $("<p></p>").text("Text.");   // Create with jQuery //方法二 //這個要 Jquery
    var txt3 = document.createElement("p");  // Create with DOM //方法三 
    txt3.innerHTML = "Text."; 
    $("body").append(txt1, txt2, txt3);      // Append the new elements //加到body中
計時器
var start = new Date().getTime();
for (i = 0; i < 50000; ++i) {
    // do something
}
var end = new Date().getTime();
var time = end - start;
alert('Execution time: ' + time);
計時器2 (更準)
var t = 0,tlock=1;
showTime();
//顯示倒數秒收
function showTime()
{
    t += 1;
    if(tlock==1){
    var sec = t;
    $('#showTimeinn').html(minSecStr(sec / 60 | 0) + ":" + minSecStr(sec % 60)); //矯正時間
      document.getElementById('showTimeinn').innerHTML= tt;  顯示
      //每秒執行一次,showTime()
      setTimeout("showTime()",1000);
    }
}
關閉觸發事件
通常有效
return false;
比較有效
e.preventDefault();  // 通知瀏覽器不要執行與事件關聯的默認動作。
e.stopPropagation();  // 不再派發事件。
範例:
var lock==0;
$( "a#iframe_fsd" ).click(function( event ) {
  if(lock===0){
    // pass 
  }else{
    alert('請先選擇!');
    $('#fs_mode').onfocus();
    // return false;  // 因為是 a 無效;
    event.preventDefault();
    event.stopPropagation();
  }
});
nl2br 的替代方法
function nl2br (str, is_xhtml) {   
    var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';    
    return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}