2017年8月23日 星期三

[HTML] id, class name

  • id vs class name 詳細的描述
idclass name
規則
id 必需是全文檔唯一 (如:一個頁面 id 不能重覆)
id 具有唯一性
name 可以同時對應多個控制元件(如:checkbox 和 radio)
class 是一個類,適用於可多次重複使用的容器
用途
HTML 元素的 Identity,主要是在客户端腳本裡使用獲取提交表單的某表單域信息,作為可與伺服器交互數據的HTML 元素的伺服器端的標示,比如input、select、textarea、框架元素( iframe、frame、 window的名字,用於在其他 frame 或window 指定 target )和button等,這些元素都與表單(框架元素作用於 form 的 target ) 提交有關
瀏覽器會根據 name 來設定發送到伺服器的 request, 在表單的接收頁面只接收有name的元素,所以賦 ID 的元素通過表單是接收不到值的。 我們可以在伺服器端根據其 Name 通過Request.Params 取得元素提交的值。在 form 裡面,如果不指定name,就不會發送到伺服器端l
控制項
<label for="MyInput">My Input</label>
<input id="MyInput" type="text">
  • label 與 form 控制項的關聯
  • for 屬性指定與 label 關聯的元素的 id,不可用 name 替代
<input type="radio" name="gender" value="male" checked> Male
<input type="radio" name="gender" value="female"> Female
  • radio button 控制項在同一個分組類,check 操作是 mutex,同一時間只能選中一個 radio,這個分組就是根據相同的 name 屬性來實現 
腳本中獲得對象
  • 腳本中獲得輸入的內容,可以直接以 
  • MyInput.value
    
  • 如果用 DOM
  • document.getElementById("MyInput").value
  • 如果用 name,通常先得到包含控制項的 form,然後從 form 再引用 name,注意這樣得到的是經過計算後將發送給伺服器的值
  • document.forms[0]
Link

    
    <a href="URL">link</a>
    
  • 如果不用 href 屬性,改用name
  • 
    <a name="PageBottom"></a>
    
  • 獲得了一個頁面 Link
  • 
    <strong><a name="1" id="1"></a>Experience (XP)</strong>
    
IMG

  • IMG元素和MAP元素之間關聯的時候,如果要定義IMG的熱點區域,需要使用其屬性usemap,使usemap="#name"(被關聯的MAP元素的Name)
特定元素的屬性

  • attribute,meta 和 param
  • Object 定義參數
  • 
    <PARAM NAME="appletParameter" VALUE="value">
    
  • Meta中
  • 
    <META NAME="Author" CONTENT="Dave Raggett">
    
createElement
var input = document.createElement('INPUT');
input.id = 'myId';
input.name = 'myName';
alert(input.outerHTML);

<INPUT id="myId">
var input = document.createElement('< INPUT name = "myName">'); 
input.id = 'myId'; 
alert(input.outerHTML);
<INPUT id="myId" name="myName">
  • HTML元素的 name 屬性在頁面中也可以起那麼一點 id 的作用,因為在 DHTML 對象樹中,我們可以使用document.getElementsByName 來獲取一個包含頁面中所有指定 name 元素的對象數組。
  • name 屬性還有一個問題,當我們動態創建可包含 name 屬性的元素時,不能簡單的使用賦值 element.name = "..." 來添加其 name,而必須在創建 Element 時,使用document.createElement('<element name = "myName"></element>') 為元素添加 name 屬性
注意事項
  • id 要符合標識的要求,比如大小寫敏感,最好不要包含下劃線 (不兼容 CSS)
  • table、tr、td、div、p、span、h1、li 等元素一般用 id
  • 表單相關的元素也可以賦 id 值, 但為這些元素賦 id 值的時候引用這些元素的方法就要變一下
  • 除去與表單相關的元素,只能賦 id 不能賦 name,這些元素有 body、li、a、table、tr、td、th、p、div、span、pre、dl、dt、dd、font、b 等等
  • 引用元素的方式
document.formName.inputName // 1
document.frames("frameName") // 2
  • name 基本上沒有什麼要求,甚至可以用數字
  • 引用元素的方式
document.all.inputID // 1
document.all.frameID // 2
CSS
  • id 是設置標籤的標識,用於區分不同的結構和內容
  • 用於定義一個元素的獨特的樣式
  • CSS 樣式定義的時候以「#」來開頭命名 id 名稱
  • HTML

<div id="banana"></div>
  • CSS

#banana{
color: lime; 
background: #ff80c0;
}
  • id 是先找到結構/內容,再給它定義樣式
  • id 通常用於定義頁面上一個僅出現一次的標記
  • 在對頁面排版進行結構化布局時(如:說通常一個頁面都是由一個頁眉,一個報頭< masthead>,一個內容區域和一個頁腳等組成)
  • 使用 id 比較理想,因為一個 id 在一個文檔中只能被使用一次,而這些元素在同一頁面中很少會出現大於一次的情況
  • id 在一個頁面中僅能被使用一次
  • id 對宏觀布局和設計放置各種元素較有用
  • 有可能在很大部分瀏覽器中反覆使用同一個id不會出現問題,但在標準上這絕對是錯誤的使用,而且很可能導致某些瀏覽器的現實問題
  • class 是設置標籤的類,用於指定元素屬於何種樣式的類
  • CSS 樣式中以小寫的「.」來命名
  • HTML

<div class="banana"></div>
  • CSS

.banana{
color: lime; 
background: #ff80c0;
}
  • class 先定義好一種樣式,再套給多個結構/內容
  • class 用來根據用戶定義的標準對一個或多個元素進行定義
  • 一個文檔中使用任意次數的 class
  • class 可以反覆使用
  • class 對文字的排版等比較有用
相同名稱問題
  • 如果頁面中有n(n>1)個HTML元素的id都相同了怎麼辦?
  • DHTML 對象中怎麼引用他們呢?
    • 使用 ASPX 頁面,這樣的情況是不容易發生,因為 asp.net 進程在處理 aspx 頁面時根本就不允許有 id 非唯一,這是頁面會被拋出異常而不能被正常的render
  • 但如果不是動態頁面,我們硬要讓 id 重複那IE怎麼做呢? 
    • 這個時候我們還是可以繼續使用document.getElementById 獲取對象,只不過我們只能獲取 id 重複的那些對象中在 HTML Render 時第一個出現的對象
    • 這時重複的 id 會在引用時自動變成一個數組,id 重複的元素按 Render 的順序依次存在於數組中,數組的腳下標依次表示 id 出現的先後順序
  • 當然HTML元素的name屬性在頁面中也可以起那麼一點id的作用,因為在 DHTML 對象樹中,使用document.getElementsByName 來獲取一個包含頁面中所有指定 name 元素的對象數組

沒有留言:

張貼留言