Vì vậy, tôi đang học để thao tác DOM và tôi nhận thấy một điều thú vị:Javascript: setAttribute() v.s. element.attribute = giá trị để thiết lập "tên" thuộc tính
Hãy nói rằng tôi muốn thiết lập các name
thuộc tính của một phần tử bằng cách sử dụng". " dot ký hiệu:
element.name = "someName";
console.log(document.getElementsByName("someName")[0]); // returns "undefined"??
Tuy nhiên nếu tôi sử dụng phương pháp document.setAttribute()
, nó hoạt động tốt:
element.setAttribute("name", "someName");
console.log(document.getElementsByName("someName")[0]); // returns the element like it should.
Không chắc chắn tại sao phương pháp ký hiệu dấu chấm không hoạt động trong trường hợp đầu tiên.
Tại sao điều này lại xảy ra?
Thường cố gắng tránh sử dụng 'getElementsByName' – zzzzBov
Tại sao một người nên tránh sử dụng getElementsByName? –
Thuộc tính CÓ thể truy cập bằng ký hiệu chấm nếu đó là cách bạn muốn truy cập chúng. Nếu bạn muốn truy cập các thuộc tính bằng cách sử dụng ký hiệu dấu chấm, bạn cần tham khảo obj.attributes.attributeName để truy lục thuộc tính và obj.attributes.attributeName.value để thao tác giá trị của nó. Nó dài quanh co khi so sánh với setAttribute hoặc getAttribute. và không được đề xuất như một giải pháp, nhưng bất kể điều đó, câu trả lời đầy đủ cho câu hỏi của bạn "Tại sao ký hiệu chấm không hoạt động trong trường hợp đầu tiên" - phải bao gồm "nó. Bạn chỉ đang tìm kiếm địa điểm sai cho các thuộc tính và giá trị của chúng. " – Radiotrib