Hướng dẫn how do you access form element using javascript? - làm cách nào để bạn truy cập phần tử biểu mẫu bằng javascript?
Như bất kỳ nhà phát triển JavaScript dày dạn nào cũng biết, có nhiều cách (quá nhiều) để làm điều tương tự. Ví dụ: giả sử bạn có một trường văn bản như sau: Show
Có nhiều cách để truy cập điều này trong JavaScript:
Phương pháp [1] và [3] được ghi lại trong tài liệu Gecko Mozilla, nhưng cũng không phải là lý tưởng. [1] quá chung chung để hữu ích và [3] yêu cầu cả ID và tên (giả sử bạn sẽ đăng dữ liệu lên ngôn ngữ phía máy chủ). Lý tưởng nhất, tốt nhất là chỉ có thuộc tính ID hoặc thuộc tính tên (có cả hai đều có phần dư thừa, đặc biệt là nếu ID không cần thiết cho bất kỳ CSS nào và tăng khả năng lỗi chính tả, v.v.). . theo tiêu chuẩn tuân thủ nhất có thể). Vậy thực hành tốt nhất ở đây là gì? Bất cứ ai cũng có thể chỉ ra một cái gì đó trong tài liệu DOM hoặc đặc tả W3C có thể giải quyết điều này? Lưu ý rằng tôi đặc biệt quan tâm đến một giải pháp phi thư viện (jQuery/nguyên mẫu).
Dednplicator 43,7K6 Huy hiệu vàng62 Huy hiệu bạc110 Huy hiệu đồng6 gold badges62 silver badges110 bronze badges Đã hỏi ngày 12 tháng 3 năm 2010 lúc 20:07Mar 12, 2010 at 20:07
3 Chỉ đặt biểu mẫu của bạn một ID và chỉ đầu vào của bạn một tên:id only, and your input a name only:
Sau đó, cách tuân thủ tiêu chuẩn nhất và ít vấn đề nhất để truy cập phần tử đầu vào của bạn là thông qua:
Sử dụng 7 thay vì chỉ 8 là thích hợp hơn vì cái sau có thể trả lại một thuộc tính của biểu mẫu có tên là "foo" thay vì phần tử HTML!Đã trả lời ngày 11 tháng 2 năm 2014 lúc 20:03Feb 11, 2014 at 20:03
DoindoinDoin 7.1903 Huy hiệu vàng34 Huy hiệu bạc36 Huy hiệu đồng3 gold badges34 silver badges36 bronze badges 21
"Không-omg-không bao giờ!" Hãy nghĩ đến khi tôi thấy phương pháp truy cập phần tử này. Vấn đề với điều này là nó giả định rằng DOM là cấu trúc dữ liệu bình thường (ví dụ: một mảng) trong đó thứ tự phần tử là tĩnh, nhất quán hoặc đáng tin cậy trong dù sao đi nữa. Chúng tôi biết rằng 99,9999% thời gian, rằng đây không phải là trường hợp. Sắp xếp lại hoặc 9 các phần tử trong biểu mẫu, thêm một 0 khác vào trang trước khi biểu mẫu được đề cập hoặc di chuyển biểu mẫu trong câu hỏi là tất cả các trường hợp mã này bị phá vỡ. Truyện ngắn: Điều này rất mong manh. Ngay khi bạn thêm hoặc di chuyển một cái gì đó, nó sẽ bị phá vỡ.
Tôi với Serge Ilinsky về điều này:
Vấn đề chính của tôi với phương pháp này là thuộc tính 4 là vô dụng khi được áp dụng cho một biểu mẫu. Tên không được chuyển đến máy chủ như một phần của bài đăng/GET và không hoạt động cho dấu trang kiểu băm.
Theo tôi, đây là phương pháp thích hợp nhất. Truy cập trực tiếp là phương pháp ngắn gọn và rõ ràng nhất.
Theo tôi, điều này có thể chấp nhận được, nhưng nhiều dòng hơn mức cần thiết. Phương pháp số 3 là thích hợp hơn. Tôi đã tình cờ xem một video từ Douglas Crockford và anh ấy đã cân nhắc về chính chủ đề này. Điểm quan tâm là ở mức -12: 00. Để tóm tắt:
Vì vậy, bạn có nó. Về mặt ngữ nghĩa, điều này có ý nghĩa nhất.
Đã trả lời ngày 12 tháng 3 năm 2010 lúc 20:45Mar 12, 2010 at 20:45
Justin Johnsonjustin JohnsonJustin Johnson 30,5K7 Huy hiệu vàng63 Huy hiệu bạc87 Huy hiệu đồng7 gold badges63 silver badges87 bronze badges 7 Để truy cập các yếu tố được đặt tên được đặt dưới dạng, đó là một thực tế tốt để sử dụng chính đối tượng 0.Để truy cập một phần tử tùy ý trong cây DOM đôi khi có thể được tìm thấy trong một biểu mẫu, hãy sử dụng 7 và phần tử 1.
Michael 7.7515 huy hiệu vàng57 Huy hiệu bạc87 Huy hiệu đồng5 gold badges57 silver badges87 bronze badges Đã trả lời ngày 12 tháng 3 năm 2010 lúc 20:10Mar 12, 2010 at 20:10
Sergey Ilinskysergey IlinskySergey Ilinsky 30.9k9 Huy hiệu vàng54 Huy hiệu bạc56 Huy hiệu Đồng9 gold badges54 silver badges56 bronze badges 5 Tôi rất thích một phương pháp thứ 5. Đó là [5] sử dụng định danh JavaScript đặc biệt này để chuyển biểu mẫu hoặc đối tượng trường cho hàm từ trình xử lý sự kiện. Cụ thể, cho các biểu mẫu:
và
Sử dụng kỹ thuật này, chức năng không bao giờ phải biết - thứ tự mà các biểu mẫu được xác định trong trang, - ID mẫu, cũng không - tên biểu mẫu Tương tự, đối với các trường:
và
Trong trường hợp này, chức năng không bao giờ phải biết tên hoặc ID của một trường trọng lượng cụ thể, mặc dù nó cần phải biết tên của trường giới hạn trọng lượng. Đã trả lời ngày 1 tháng 5 năm 2013 lúc 22:33May 1, 2013 at 22:33
1 Nó không thực sự trả lời câu hỏi của bạn, nhưng chỉ về phần này:
Bạn rất có thể cần phải có thuộc tính 1 trên mỗi trường biểu mẫu, để bạn có thể liên kết phần tử 0 của nó với nó, như thế này:
Điều này là cần thiết cho khả năng tiếp cận (nghĩa là nếu bạn không liên kết với nhãn và kiểm soát, tại sao bạn ghét người mù đến vậy?). Nó có phần dư thừa, mặc dù ít hơn khi bạn có các hộp kiểm/nút radio, trong đó một số trong số chúng có thể chia sẻ 4. Cuối cùng, 1 và 4 dành cho các mục đích khác nhau, ngay cả khi cả hai thường được đặt thành cùng một giá trị.Đã trả lời ngày 12 tháng 3 năm 2010 lúc 21:24Mar 12, 2010 at 21:24
Paul D. Waitepaul D. WaitePaul D. Waite 94,8K54 Huy hiệu vàng196 Huy hiệu bạc266 Huy hiệu Đồng54 gold badges196 silver badges266 bronze badges 5 Đây là một chút cũ nhưng tôi muốn thêm một điều tôi nghĩ là có liên quan. . Các yếu tố của một biểu mẫu theo tên chứ không phải bằng ID. Tôi không nói về hình thức đó. Biểu mẫu, OK, bạn có thể cung cấp cho nó một ID và sau đó truy cập nó bằng nó. Nhưng nếu bạn có một nút radio ở dạng, việc sử dụng nó như một đối tượng (nhận và đặt giá trị của nó) và bạn chỉ có thể làm điều này theo tên này dễ dàng hơn nhiều. Thí dụ:
Bạn có thể nhận/đặt giá trị đã kiểm tra của nút radio R1 nói chung bằng cách sử dụng document.mainform.r1.value hoặc document.getEuityById ("Mainform"). muốn luôn luôn sử dụng phương pháp này, bất kể loại yếu tố hình thức. Tôi, tôi hoàn toàn thoải mái khi truy cập các nút radio theo tên và hộp văn bản theo ID. Đã trả lời ngày 31 tháng 3 năm 2017 lúc 2:58Mar 31, 2017 at 2:58
VsimvsimVSim 1513 Huy hiệu bạc9 Huy hiệu Đồng3 silver badges9 bronze badges 1 Được lỗi thời, tôi luôn sử dụng cú pháp 'document.myform.myvar' nhưng gần đây tôi đã thấy nó thất bại trong Chrome (OK trong Firefox và IE). Đó là một trang ajax (nghĩa là được tải vào thuộc tính bên trong của một div). Có lẽ Chrome không nhận ra biểu mẫu là một yếu tố của tài liệu chính. Tôi đã sử dụng getEuityByid (không tham chiếu biểu mẫu) thay vào đó và nó hoạt động tốt. Đã trả lời ngày 26 tháng 11 năm 2013 lúc 12:08Nov 26, 2013 at 12:08
1 Câu hỏi cũ, những hiểu biết mới (2021)Sau khi đọc và học hỏi từ một số câu trả lời tuyệt vời cho câu hỏi này, cần phải quay lại những điều cơ bản và cố gắng lấy thêm dữ liệu về cách 1 và 4 được xác định trong nguồn gốc của chúng.to get more data how 1 and 4 are defined in their origins.Kết quả là đơn giản và khai sáng. Tôi đang tóm tắt nó dưới đây:. I'm summarizing it below:
References:
Nó cũng đáng để xem xét phần tử 0Các tài liệu tham khảo khác trong Stackoverflow: Có phải thuộc tính tên thực sự cần thiết trong HTML? Sự khác biệt giữa các thuộc tính ID và tên trong HTML Tiền thưởng: Sự khác biệt ngắn và mát mẻ giữa 1 và 4, đối với người thiếu kiên nhẫn.Đã trả lời ngày 7 tháng 11 năm 2021 lúc 1:05Nov 7, 2021 at 1:05
Almir Camposalmir CamposAlmir Campos 2.6261 Huy hiệu vàng28 Huy hiệu bạc26 Huy hiệu đồng1 gold badge28 silver badges26 bronze badges Chỉ cần thêm vào tất cả mọi thứ đã nói, bạn có thể truy cập vào các ____19 với 4 hoặc 1 bằng cách sử dụng thuộc tính 0 của mẫu đối tượng, bởi vì không có nó, bạn có thể nhận được một thuộc tính của biểu mẫu có tên là "foo" thay vì phần tử HTML. Và theo @Paul D. Waite, hoàn toàn ổn khi có cả tên và ID. 0 1Theo MDN trên trang HTMLformelement.Elements
Đã trả lời ngày 19 tháng 7 năm 2019 lúc 16:02Jul 19, 2019 at 16:02
Tôi thích cái này: 2
Đã trả lời ngày 27 tháng 8 năm 2019 lúc 6:53Aug 27, 2019 at 6:53
2 Thuộc tính 4 hoạt động tốt. Nó cung cấp một tham chiếu đến 0. 3 - sẽ liệt kê tất cả các yếu tố với trường tên của cha mẹ. 4 - Sẽ chỉ liệt kê 5 như 6, 7, v.v. 3 4Lưu ý: Để 8 hoạt động, 9 cần phải là thẻ 0. Trong khi đó, 1 sẽ hoạt động trên bất kỳ phần tử HTML nào - chẳng hạn như 2, 3, v.v.Đã trả lời ngày 18 tháng 1 năm 2020 lúc 9:48Jan 18, 2020 at 9:48
AakashaakashAakash 19.1k6 Huy hiệu vàng93 Huy hiệu bạc75 Huy hiệu Đồng6 gold badges93 silver badges75 bronze badges 1 Để bổ sung các câu trả lời khác, Document.MyForm.foo là cái gọi là DOM Cấp 0, là cách được thực hiện bởi NetScape và do đó không thực sự là một tiêu chuẩn mở mặc dù nó được hỗ trợ bởi hầu hết các trình duyệt. Đã trả lời ngày 26 tháng 2 năm 2012 lúc 7:13Feb 26, 2012 at 7:13
1 Mẫu 2 là OK, và Mẫu 3 cũng được khuyến nghị. Sự dư thừa giữa tên và ID là do sự cần thiết phải giữ khả năng tương thích. Trong HTML5, một số yếu tố (như IMG, Form, iframe và như vậy) sẽ mất thuộc tính "tên" của chúng và khuyến nghị chỉ sử dụng ID của chúng để tham khảo chúng từ bây giờ :)
Đã trả lời ngày 12 tháng 3 năm 2010 lúc 20:16Mar 12, 2010 at 20:16
Wintermutewintermutewintermute 4232 Huy hiệu bạc12 Huy hiệu Đồng2 silver badges12 bronze badges 2 Kiểm tra trang này: document.getElsByMname () 5Nó phải là 'các phần tử' và phải trả về một mảng, bởi vì nhiều hơn một yếu tố có thể có cùng tên.
Đã trả lời ngày 12 tháng 3 năm 2010 lúc 20:57Mar 12, 2010 at 20:57
Robertrobertrobert 4.7731 Huy hiệu vàng18 Huy hiệu bạc21 Huy hiệu đồng1 gold badge18 silver badges21 bronze badges 2 Câu trả lời của tôi sẽ khác nhau về câu hỏi chính xác. Nếu tôi muốn truy cập một phần tử nhất định cụ thể, thì tôi sẽ sử dụng document.getEuityById (). Một ví dụ là tính toán tên đầy đủ của một người, bởi vì nó đang xây dựng trên nhiều trường, nhưng nó là một công thức lặp lại. Nếu tôi muốn truy cập phần tử như một phần của cấu trúc chức năng (một biểu mẫu), thì tôi sẽ sử dụng: 6Đây là cách nó cũng hoạt động từ quan điểm của doanh nghiệp. Những thay đổi trong vòng lặp đi cùng với các thay đổi chức năng trong ứng dụng và do đó có ý nghĩa. Tôi áp dụng nó chủ yếu để xác thực thân thiện với người dùng và ngăn chặn các cuộc gọi mạng để kiểm tra dữ liệu sai. Tôi lặp lại phía máy chủ xác thực (và thêm một số khác vào nó), nhưng nếu tôi có thể giúp phía khách hàng của người dùng, thì điều đó có lợi cho tất cả mọi người. Để tổng hợp dữ liệu (như xây dựng biểu đồ hình tròn dựa trên dữ liệu trong biểu mẫu), tôi sử dụng các tài liệu cấu hình và các đối tượng JavaScript tùy chỉnh. Thì là ý nghĩa chính xác của lĩnh vực quan trọng liên quan đến bối cảnh của nó và tôi có sử dụng Document.getEuityById ().
Đã trả lời ngày 29 tháng 11 năm 2013 lúc 7:19Nov 29, 2013 at 7:19
Loek Bergmanloek BergmanLoek Bergman 2.15220 Huy hiệu bạc18 Huy hiệu đồng20 silver badges18 bronze badges Bởi vì trường hợp [2] 4 là một phương ngữ từ Internet & nbsp; Explorer.Vì vậy, thay vì nó, tôi thích 5 hoặc 6.
Đã trả lời ngày 29 tháng 3 năm 2020 lúc 12:14Mar 29, 2020 at 12:14
Làm thế nào để chúng ta truy cập các phần tử của biểu mẫu bằng cách sử dụng đối tượng biểu mẫu trong JavaScript?The Form Object in HTML DOM is used to represent the HTML < form > element. This tag is used to set or get the properties of < form > element. This element can be accessed by using getElementById() method.
Làm cách nào để nhận dữ liệu biểu mẫu với JavaScript?Chúng ta có thể tạo FormData (Mẫu) mới từ biểu mẫu HTML hoặc tạo một đối tượng mà không có biểu mẫu, sau đó nối các trường bằng các phương thức: formData.ốp sắt (tên, giá trị) formData ... formdata.Xóa (Tên). formdata.Nhận (Tên). formData.has(name). Làm cách nào để nhận được giá trị của một yếu tố biểu mẫu?Làm thế nào để có được giá trị của một phần tử biểu mẫu bằng JavaScript.. otext = oform.elements ["text_element_name"];Hoặc oText = oform.elements [index];.... oform = document.forms [index];.... Text_val = otext.value;.... .... name = oform.elements ["name"]. Giá trị ;. Làm thế nào để chúng ta truy cập các yếu tố của một biểu mẫu bằng cách sử dụng đối tượng biểu mẫu trong JavaScript một cách não?Answer:.. Tìm hiểu nhiều yếu tố có trong một yếu tố cụ thể .. [INDEX] Nhận giá trị của các phần tử đầu tiên, (chỉ mục 0) ở dạng ... nameditem... Vòng lặp qua các phần tử ở dạng và đầu ra giá trị của từng phần tử .. |