Xét đoạn mã sau:html yếu tố id như biến javascript
<html>
<head></head>
<body>
<div id='test' class='blah'>
<a href='http://somesite.com/' id='someLink'>click!</a>
</div>
</body>
</html>
Vì vậy, tôi chỉ vừa mới phát hiện ra rằng điều này tạo ra một đối tượng javascript gọi someLink
và tôi có thể ví dụ như nhận được giá trị của thuộc tính href với someLink.href
. Tôi đã thử nghiệm điều này trong Chrome, FF và IE mới nhất và nó hoạt động.
Trước hết, tính năng "này" được bao lâu? Tôi tưởng tượng có lẽ một thời gian, bởi vì tôi đã biết trong nhiều năm rằng ID cho các phần tử html trên một trang phải là duy nhất, và nếu bạn có nhiều hơn một phần tử chia sẻ cùng một ID, ID cuối cùng sẽ ghi đè (các) trước đó, và sử dụng ví dụ getElementById() sẽ trả về giá trị cuối cùng. Nhưng tôi không bao giờ thực sự hiểu được lý do tại sao, nhưng bây giờ, nhìn vào nó như là một "này là tạo ra một đối tượng" quan điểm, nó có ý nghĩa. Vì vậy, như xa như có thể trực tiếp truy cập nó với các đối tượng id-name-as-javascript ... bao lâu đã được xung quanh? Thời đại IE6? Sớm hơn?
Thứ hai ... Tôi đoán đây là điểm thảo luận nhiều hơn câu hỏi, nhưng ... IMO điều này dường như không phải là một "tính năng" rất tốt ... Có phải toàn bộ vấn đề một hàm DOM và hàm bao bọc như getElementById()
, để cung cấp cho một số tổ chức và quan trọng hơn, hãy cắt giảm các vấn đề về không gian tên? Tôi không cảm thấy tôi phải lo lắng về các yếu tố html ngẫu nhiên trên một trang ghi đè lên các biến javascript của tôi (một cái gì đó gần đây đã xảy ra, đó là lý do tại sao tôi phát hiện ra "tính năng" này). Có ai biết lý do tại sao điều này là như vậy, logic đằng sau nó là gì?
"Tôi đã biết trong nhiều năm rằng ID cho các phần tử html trên một trang phải là duy nhất và nếu bạn có nhiều phần tử chia sẻ cùng một ID thì ID cuối cùng sẽ ghi đè (các) thành phần trước đó và sử dụng ví dụ getElementById() sẽ trả về giá trị cuối cùng "Theo như tôi biết,' getElementById() 'sẽ trả về ** đầu tiên **, không phải là phần tử cuối cùng có ID đã cho; mặc dù nó chắc chắn không nhất quán (hoặc, ít nhất, không nên dựa vào sự nhất quán). –
Bạn đánh vào đầu bằng điểm thứ hai. Đó là * không * một tính năng tốt để có, đó là lý do tại sao nó không được chấp nhận từ mãi mãi và sẽ không hoạt động nếu bạn đang sử dụng '' sử dụng nghiêm ngặt "' chỉ thị. – zzzzBov