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: ,
Views: 12,300



意見

# 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();

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<February 2008>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication