2010-10-14 62 views
7

據我知道有兩種方法可以得到一個文本框中的值或者JavaScript的名字VS ID

document.formName.textboxName.value; 

document.getElementbyId('textboxId').value; 

據我所知使用的窗體名稱就意味着我有少編寫代碼,因爲名稱可用於發佈數據和獲取值(除了使用ajax)。至於如果我只是使用標準表單發佈,我會使用name發佈,但我不能使用id

例如在PHP中我會用

$_POST['texboxName']; 

如果我哪裏有和文本框的ID使用PHP我不能得到的價值呢?

這是標準推薦的方式,並使用name瀏覽器友好?如果可能請鏈接,謝謝。

回答

12

這裏的最終指南是HTML specification

的事情,站在外邊

  • id是有效的任何HTML元素,而name只適用於少數(ainputtextarea也許其他一些)。
  • input(和textarea)元素要求name要設置,如果你想要它被提交。
+0

對我來說夠好,謝謝! :) – Elliott 2010-10-14 18:43:05

+0

@Vilx - 我知道這是有點老,但想知道你的意思是「共享相同的命名空間」 – PeanutsMonkey 2012-07-20 01:36:56

+0

@PananutsMonkey - 謝謝你指出這一點給我。我錯了。命名空間共享的事物[僅適用於錨元素](http://www.w3.org/TR/1999/REC-html401-19991224/struct/links.html#anchors-with-id)。該鏈接更好地解釋了它,但簡而言之,當使用URL中的'#'跳轉到特定的錨點時,它會查看'id'和'name'屬性以確定要滾動到哪個錨點。如果有兩個不同的錨點,其中'id'等於另一個'name',那麼瀏覽器會感到困惑。所以規範使這個無效。 – 2012-07-20 07:54:39

1

我通常使用兩種。正如您所提到的,name對於通過JavaScript使用數據以及在提交數據後非常有用。請根據需要隨意在name中使用其他字符:當輸入將用於陣列服務器端時,我傾向於在我的名字中使用[]

id屬性可用於通過JS/DOM訪問元素。它也被<label>for屬性使用。例如,如果您使用複選框執行此操作,則單擊該標籤將導致該框被選中。這是可用性的一大優點。

1

對於每個表單元素,我認爲最好有一個名稱爲的id。原因是,如果你想添加標籤,或者通過sytlesheets(你應該這樣做)設計樣式,那麼兩者都有意義。

至於使用javascript訪問它:更好的方法是使用元素的ID,因爲如果你改變表單的名稱一切都打破了。這在使用ID時不會發生。

+1

但是,大多數處理表單的JavaScript活動都是從表單(從按鈕和字段事件或從表單本身的onsubmit事件)開始的,所以從調用方使用'this.form'或'this'沒有歧義。請注意,「字段」可能涉及多個元素,因此通過名稱而不是id檢查值通常是必要的(認爲單選按鈕和複選框)。 – 2010-10-14 19:16:07

1

我更喜歡使用ID,因爲代碼的「功能」(即:你試圖實現的內容)並沒有與語義綁定在一起。對我而言,.GetElementById('myid')更突出,並且更具可讀性,只是在代碼中分散了「myid」。另外,您可以更輕鬆地重命名元素。這是我的2p值!