2010-10-14 31 views
7

Theo như tôi biết có hai cách để có được những giá trị từ một textbox hoặcjavascript tên vs ID

document.formName.textboxName.value; 

hoặc

document.getElementbyId('textboxId').value; 

Như tôi đã hiểu nhau thông qua tên hình thức sẽ có nghĩa là tôi chỉ còn lại ít mã để viết, như tên có thể được sử dụng để đăng dữ liệu và nhận được giá trị (ngoài việc sử dụng ajax). Vì nếu tôi chỉ đăng bài bằng cách sử dụng một biểu mẫu chuẩn tôi sẽ sử dụng name để đăng nhưng tôi không thể sử dụng id?

ví dụ: trong php Tôi sẽ sử dụng

$_POST['texboxName']; 

Nếu tôi ở đâu và ID trên hộp văn bản tôi không thể nhận giá trị bằng cách sử dụng php?

Đó là cách được giới thiệu tiêu chuẩn để thực hiện việc này và đang sử dụng name trình duyệt thân thiện? Liên kết nếu có thể, xin cảm ơn.

Trả lời

12

Hướng dẫn cuối cùng trong số này là HTML specification.

Những điều đó nổi bật có:

  • id có giá trị đối với bất kỳ phần tử HTML, trong khi name chỉ áp dụng cho một vài lựa chọn (a, input, textarea và có thể một vài người khác).
  • An input (và textarea) yếu tố yêu cầuname để được đặt nếu bạn muốn gửi.
+0

Đủ tốt cho tôi, cảm ơn! :) – Elliott

+0

@Vilx - Nhận thức được điều này là hơi cũ nhưng đã tự hỏi những gì bạn có nghĩa là "chia sẻ cùng một không gian tên" – PeanutsMonkey

+0

@PeanutsMonkey - Cảm ơn bạn đã chỉ ra điều này với tôi. Tôi đã nhầm. Điều chia sẻ không gian tên là [chỉ hợp lệ cho các phần tử neo] (http://www.w3.org/TR/1999/REC-html401-19991224/struct/links.html#anchors-with-id). Liên kết giải thích nó tốt hơn, nhưng trong một nutshell, khi sử dụng '#' trong URL để nhảy đến một neo cụ thể, nó nhìn vào cả hai 'id' và' name' thuộc tính để xác định neo để di chuyển đến. Nếu có hai neo khác nhau trong đó 'id' bằng 'tên' của người kia, trình duyệt sẽ bị lẫn lộn. Vì vậy, các spec làm cho điều này không hợp lệ. –

1

Tôi thường sử dụng cả hai. Như bạn đã đề cập, name hữu ích khi sử dụng dữ liệu qua JavaScript và cũng một khi nó đã được gửi. Vui lòng sử dụng các ký tự bổ sung trong các name khi cần thiết: Tôi có xu hướng sử dụng [] s trong tên của tôi khi đầu vào sẽ được sử dụng ở phía máy chủ mảng.

Thuộc tính id có thể được sử dụng để truy cập phần tử qua JS/DOM. Nó cũng được sử dụng bởi thuộc tính 's for. Ví dụ: nếu bạn thực hiện việc này bằng hộp kiểm, việc nhấp vào nhãn sẽ khiến hộp kiểm được chọn. Đó là một lợi thế lớn cho khả năng sử dụng.

1

Tôi coi thực tiễn tốt là có tên là cho mỗi yếu tố biểu mẫu. Lý do là nếu bạn muốn thêm nhãn, hoặc tạo kiểu dáng thông qua sytlesheets (mà bạn nên làm), sau đó nó có ý nghĩa để có cả hai.

Để truy cập bằng javascript: cách tốt hơn là đi với id của phần tử, bởi vì nếu bạn thay đổi tên của biểu mẫu, mọi thứ sẽ bị hỏng. Điều này không xảy ra khi bạn sử dụng id.

+1

Hầu hết các hoạt động JavaScript đối phó với một biểu mẫu, được bắt đầu từ bên trong biểu mẫu (từ các sự kiện nút và trường hoặc từ sự kiện onsubmit của biểu mẫu), vì vậy sử dụng 'this.form' hoặc' this' từ người gọi không có sự mơ hồ . Cũng cần lưu ý rằng một "trường" có thể liên quan đến nhiều hơn một phần tử, vì vậy việc kiểm tra các giá trị theo tên chứ không phải theo id thường là một điều cần thiết (nghĩ các nút radio và các hộp kiểm). –

1

Tôi thích sử dụng ID hơn, vì "hàm" (nghĩa là những gì bạn đang cố gắng đạt được) mã của bạn không bị ràng buộc trong ngữ nghĩa. Đối với tôi, .GetElementById ('myid') nổi bật hơn, và dễ đọc hơn là chỉ có "myid" nằm rải rác trong đoạn mã. Ngoài ra, bạn có thể dễ dàng đổi tên các phần tử hơn. Đó là giá trị 2p của tôi!