這陣子在狂打Javascript巷戰,以下是我整理出來的幾則Howto Tips,如果有人知道其他的解法也歡迎提出來跟大家分享。

  1. 檢查物件是否被隱藏
    【情境】
    <input>被包在<tr><td>中,當<tr style="display:none;">,我希望能用Javascript檢測出<input>處於不顯示狀態。
    【解法】
    利用document.getElementById("inputName").offsetWidth,被隱藏時數值為0。注意,要網頁完全載入後才有效,建議放在window.onload事件之後。
  2. 取得目前焦點所在的元素
    【情境】
    <input> <select>可以利用tabindex設定焦點順序,我想知道目前焦點停在哪一個欄位上?
    【解法】
    IE提供document.activeElement屬性,一步到位! 注意: IE Only, Firefox無此屬性。
  3. 保存網頁元素自訂的數值或設定
    【情境】
    假設網頁上有十個<input>數字輸入欄位,每個有其上下限,且會因使用者的選取而動態改變,要怎麼保存? 另設20個<input type=hidden>嗎?
    【解法】
    善用HTML DOM中Attribute可以任意設定的特性,document.getElementById("inputName").MyAttributeName = theValue; 就可以了。
  4. 四捨五入到小數第n位
    【情境】
    講到四捨五入,一般人想到的是Math.round,但它永遠取到整數,我要Round到小數第三位怎麼辦? Math.round(n*1000) / 1000嗎?
    【解法】
    別再耍笨了(鳴~~~ 我笨很久了),數值類別有個Number.toFixed(d),可以直接取到小數第d位,例如: var num = 1.249; alert(num.toFixed(2));
  5. 可有可無的自訂函數
    【情境】
    寫了一個共用js,引用它的網頁可以視需要加上客製的自訂函數,並由js中觸發,但也可以不宣告。在js中要如何做到檢查若函數存在就Call,沒定義就算了?
    【解法】
    if (typeof(CustFunction) == "function") CustFunction();
  6. 函數的參數個數不固定
    【情境】
    在.NET裡有string.Format("...", arg1, arg2, arg3...)這種參數個數不固定的宣告及呼叫法,在Javascript裡要怎麼做?
    【解法】
    函數裡可以用arguments取回參數陣列
    function dynaParam(s) 
    {
        alert("s = " + s);
        for (var i=1; i<arguments.length; i++) 
            alert("arg" + i + " = " + arguments[i]);
    }
    dynaParam("Only One", "P1");
    dynaParam("Try Three", "P1", "P2", "P3");

Comments

# by Will 保哥

我貢獻一個,在 IE 中把 Browser 強制關閉的方法: IE 6 window.opener=null; window.close(); IE 7 window.open('','_parent',''); window.close();

Post a comment