2011-11-01 36 views
47

Ví dụ:Bạn có thể sử dụng thẻ DIV tự đóng không?

<div id="myDiv" /> 

Something sau đó sẽ được thực hiện để cư này div sử dụng Javascript.

HTML này có hợp lệ không?

+1

Tôi thành thật sẽ nói không. Tôi cảm thấy rằng chỉ một số thẻ nhất định có thể tự đóng trong xhtml. Chúng bao gồm


, , . Nếu nó hoạt động mặc dù sau đó cảm thấy tự do để sử dụng nó. –

Trả lời

36

No. HTML 4.x không có bất kỳ khái niệm nào về thẻ tự đóng.

Nó hợp lệ trong XHTML.

+1

Điều này là đúng - cũng vậy, đối với những người trong chúng ta sử dụng AngularJS hoặc các khung tương tự, một DIV tự đóng sẽ phá vỡ ứng dụng trong IE8. – Stone

+0

Bạn gọi thẻ img là gì? –

+1

Chỉ cần cẩn thận khi sử dụng jquery như SOMETIMES nó sẽ không hoạt động ngay khi bạn có một thẻ tự đóng ở một nơi CERTAIN. –

11

Thẻ Div không phải là thẻ tự đóng hợp lệ. Để có một div trống nó sẽ là tốt hơn để làm điều này:

<div id="myDiv"></div> 
0

Không, đó là XML hợp lệ (không chứa mã HTML) và như xa như tôi biết, sẽ chỉ được chấp nhận nếu tài liệu được gửi với một ứng dụng/xml mimetype.

Tuy nhiên, nó có thể hoạt động với XHTML và khai báo XHTML Doctype.

9

Theo khai báo XML và định nghĩa tài liệu XHTML 1.0 và 1.1, điều này là tốt: thẻ null kết thúc (>) có thể được sử dụng khi ngay sau thẻ bắt đầu rỗng gần hơn (/) và mã của bạn tương đương với <div id="myDiv"></div>.

Đó là một vấn đề khác hoàn toàn cho dù bất kỳ người tiêu dùng cụ thể nào cũng có thể xử lý chính xác điều này.

Tuyên bố SGML được sử dụng bởi HTML 4.01 cho phép rút ngắn thẻ, nhưng nó có cú pháp khác nhau cho các thẻ null-end; ở đó bạn có thể viết <div id="abc"/this is a non-empty div/. Một lần nữa, số dặm có thể thay đổi tùy theo hỗ trợ của trình duyệt. (Tiền của tôi là "không").

Phiên bản tương lai của HTML (HTML5? Nếu tên đó vẫn còn hoạt động) không còn được thực hiện dưới dạng ngôn ngữ SGML nữa, và do đó chúng đơn giản cho phép những gì họ nói một ngữ pháp chính thức.

+3

+1 để biết thêm chi tiết. Có thể một liên kết tương ứng sẽ hữu ích ^.^ –

+1

@Howdy_McGee: Kiểm tra W3C, chúng có các DTD cũng như khai báo SGML (nhiều phiên bản) cho HTML 4.01 và cũng khai báo SGML (bắt buộc) cho XML. Trên Linux, tìm trong '/ usr/share/xml' và'/usr/share/sgml'. –

1

Tôi chạy hai khối các mã thông qua W3C validator. Sao chép và dán mã vào đầu vào trong tab Xác thực bằng Trực tiếp đầu vào để xem kết quả cho chính bạn.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
    <title>title</title> 
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" > 
    </head> 
    <body><div id="Mydiv" /></body> 
</html> 

Khối mã với Doctype của HTML chuyển tiếp 4.01 không thực hiện được quá trình xác thực.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 
    <head> 
    <title>Test</title> 
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> 
    </head> 
    <body><div id="Mydiv" /></body> 
</html> 

Khi tôi thêm tài liệu chuyển tiếp XHTML 1.0, thay thẻ meta thành thẻ tự đóng và thêm vào dòng html xmlns, xác thực được chuyển.

Vì vậy, để trả lời nửa câu hỏi đầu tiên của bạn, đó là HTML hợp lệ theo nguyên tắc chuyển tiếp XHTML 1.0. Có hay không bạn có thể sử dụng javascript để cư trú đúng cách, tôi không chắc chắn.

Các vấn đề liên quan