Several Javascript Howto Tips

這陣子在狂打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");
Published 01 February 2008 10:54 AM 由 Jeffrey
Filed under: ,


意見

# Will 保哥 said on 31 January, 2008 10:57 PM

我貢獻一個,在 IE 中把 Browser 強制關閉的方法:

IE 6

   window.opener=null;    

   window.close();  

IE 7

   window.open('','_parent','');

   window.close();

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 

請輸入以上的數字:

【請注意】意見送出後可能需要幾分鐘才會出現在網頁上,請耐心等候。

搜尋

Go

<February 2008>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678
 
RSS


BlogLook Score and Rank

Syndication