天天看點

自定義HTML标簽屬性

 為HTML元素添加一自定義的屬性非常友善,隻須将其加到尖括号中即可,與内置屬性地位相等。

如我們要為TextBox元素添加屬性idvalue:

<input type="text" id="txtInput" name="txtInput" value="自定義文本">

隻須在原來的控件後面加上:idvalue=”…”,成為:

<input type="text" id="txtInput" name="txtInput" value="自定義文本" idvalue="自定義值">

idvalue即可正式成為txtInput的屬性,地位與其他屬性相等。

如以下例子,在IE6中調試通過:

<html>

<head>

    <title>自定義屬性</title>

    <script language="javascript">...

            function showText()

            ...{

                 alert(document.getElementByIdx("txtInput").value);

             }

            function showValue()

                 alert(document.getElementByIdx("txtInput").idvalue);

    </script>

</head>

<body>

    <input type="text" id="txtInput" name="txtInput" value="自定義文本" idvalue="自定義值">

    <input type="button" id="btnShowText" name="btnShowText" value="顯示文本内容" onclick="showText();">

    <input type="button" id="btnShowValue" name="btnShowValue" value="顯示文本值" onclick="showValue();">

</body>

</html>

但idvalue在Firefox中卻不能通過,主要是因為Firefox控制嚴格,是以這些自定義屬性不能認識。經過調試,隻能用document.getElementByIdx("txtInput").attributes["idvalue"].nodeValue取得,該方法在IE中也可使用。是以,同時适用IE和Firefox的代碼為:

                 alert(document.getElementByIdx("txtInput").attributes["idvalue"].nodeValue);

以下轉自csdn   

    就是給标簽寫一個它并不存在屬性;如

<div TextLength="20"></div>

在HTML中,div标簽并沒有TextLength屬性,是我自已經加的;

假如,頁面中有這樣一段HTML代碼:

<div>新聞清單

         <ul>

           <li> [圖]不按規定線路營運阻撓執法人員執法 公共汽車擅改營運線路被查處 [2007-7-31] </li>

           <li> 五金廠已搬遷 眼鏡廠仍擾民 [2007-7-31] </li>

           <li> [圖]“2007香港購物節”正在舉行——市民赴港瘋狂“血拼” [2007-7-27] </li>

           <li>[圖]花園後面的山腳邊,存在大量的亂搭建,街道執法隊展... [2007-7-27] </li>

         </ul>

</div>

我要截取這些字元,當然很容易;用getElementsByTabName取出li标簽清單,用個for循環逐一處理一個就可以了;

但是,字元截多長呢,自然要設變量,這個變量設在哪呢,如果寫在javascript中,這個變量離HTML代碼太遠了(一個在頭部head,一個在body),開發人員不友善操作,因為在頁面中,它能會有很多這樣的新聞清單或其它清單;于是我想到了給li的父級标簽ul,加自定義屬性,當然,如果是ol也是可以的,隻要是li的父級就行;如:

         <ul TextLength="15">

與前面相比,ul多了TextLength屬性,就是我要截取的字元串長度值;然後,我寫了一個函數,來讀取這個屬性,并将該區域的li中字元截短。函數如下:

<script language="javascript" type="text/javascript">

function lineShow()

{

    var list = document.getElementsByTagName_r("li");  

    for(var i = 0; i < list.length; i ++ )

    {

     // 擷取自定義參數,為字元長度

var textlength = Number(list[i].parentNode.getAttribute("TextLength"));

      list[i].setAttribute("title", list[i].innerHTML);

      list[i].innerHTML = subString(list[i].innerHTML, textlength);

    }

}

function subString(str, len)

    len = len == null || isNaN(len) ? 0 : len;

    if(len < 1 || str.length <= len)return str;

    return str.substr(0, len) + "…";

</script>

上面代碼中的語句,都是較常用的,不用過多解釋了。

最後,在頁面載入完畢時,調用該函數就行了。調用函數的代碼如下:

<script language="javascript" type="text/javascript" defer="true">

lineShow();

這時效果就出現了,頁面中所有清單字元被截短,當滑鼠碰上時,顯示其完整标題;

其實上面的javascript并沒有什麼特殊的,很簡單,唯一不同的是,我利用自定義屬性,讓開發人員,在使用這個效果時,更友善了。

繼續閱讀