自訂HTML標籤屬性

來源:互聯網
上載者:User

標籤:

 為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的代碼為:

 

<html>
<head>
    <title>自訂屬性</title>
    <script language="javascript">
            function showText()
            {
                 alert(document.getElementByIdx("txtInput").value);
             }
            
            function showValue()
            {
                 alert(document.getElementByIdx("txtInput").attributes["idvalue"].nodeValue);
             }

    </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>

 

以下轉自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的父級就行;如:

<div>新聞列表
         <ul TextLength="15">
           <li> [圖]不按規定線路運營阻撓執法人員執法 公交車擅改運營線路被查處 [2007-7-31] </li>
           <li> 五金廠已搬遷 眼鏡廠仍擾民 [2007-7-31] </li>
           <li> [圖]“2007香港購物節”正在舉行——市民赴港瘋狂“血拚” [2007-7-27] </li>
           <li>[圖]花園後面的山腳邊,存在大量的亂搭建,街道執法隊展... [2007-7-27] </li>
         </ul>
</div>

與前面相比,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();
</script>

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

自訂HTML標籤屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.