為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并沒有什麼特殊的,很簡單,唯一不同的是,我利用自定義屬性,讓開發人員,在使用這個效果時,更友善了。