Làm cách nào để nhận giá trị id ứng dụng khách của điều khiển ASP.NET qua javascript trong tệp JS?

lập trình


Cách nhận giá trị id ứng dụng khách của điều khiển asp.net thông qua JavaScript trong tệp JS trong trang nội dung và tệp JS được tham chiếu từ cùng một trang.
Tôi đang làm việc trong .net framework 3.5. Tôi đang tìm nạp giá trị id khách hàng như bên dưới
document.getElementById(‘<%=txtDDAExpiryDate.ClientID%>‘).value;. Tôi đang nhận được ngoại lệ dưới đây
Uncaught TypeError: Không thể đọc thuộc tính null (đọc ‘giá trị’)

Những gì tôi đã thử:

Mã như dưới đây

document.getElementById('<%=txtDDAExpiryDate.ClientID%>').value;

Giải pháp 1

Luôn bắt đầu bằng cách đọc tài liệu: Tài liệu: phương thức getElementById() – API Web | MDN[^] – khá rõ ràng là nó trả về một null khi phần tử có ID đó không tồn tại:

Trích dẫn:

Một đối tượng Phần tử mô tả đối tượng phần tử DOM khớp với ID đã chỉ định hoặc null nếu không tìm thấy phần tử khớp nào trong tài liệu.

Vậy bây giờ bạn cần biết – chính xác – txtDDAExpiryDate.ClientID đang quay trở lại từ máy chủ, sau đó thử khớp thủ công với HTML của bạn.
Điều đó sẽ cho bạn biết vấn đề nằm ở đâu: Phía máy chủ hoặc Phía máy khách.
Và khi bạn biết điều đó, bạn sẽ có thể giải quyết nó.

Sử dụng trình gỡ lỗi (hoặc chỉ viết nó lên trang) để tìm hiểu.

Xin lỗi, nhưng chúng tôi không thể làm điều đó cho bạn – đã đến lúc bạn học một kỹ năng mới (và rất, rất hữu ích): gỡ lỗi!

Giải pháp 2

Vì ID trong tài liệu HTML được coi là duy nhất nên WebForms “xáo trộn” ID của bất kỳ điều khiển phía máy chủ nào bằng cách kết hợp nó với ID của mọi “vùng đặt tên” trong hệ thống phân cấp của nó.

Nếu bạn có thể chuyển sang .NET 4.x thì bạn có thể sử dụng Thuộc tính ClientIDMode[^] để ghi đè hành vi đó.

Nếu không, bạn sẽ cần tìm một cách khác để xác định phần tử của mình. Ví dụ:

JavaScript
document.querySelector("*[id$='_txtDDAExpiryDate']")

Tài liệu: phương thức querySelector() – API Web | MDN[^]

コメント

タイトルとURLをコピーしました