2013-03-27 36 views
7

Tôi đang tạo hộp đèn làm dự án trường học và tôi không thể sử dụng jQuery. Tôi có một hình ảnh. Khi bạn nhấp vào nó, Javascript sẽ tạo một div trong suốt với ID "lớp phủ". Tôi muốn div để loại bỏ chính nó, hoặc cha mẹ để loại bỏ nó, nhưng nó không hoạt động. Tôi nghĩ rằng nó đã làm với thực tế là bạn không thể liên kết 'onclick' với một yếu tố chưa tồn tại.Tạo một yếu tố có thể tự xóa nó?

+3

Đúng vậy, bạn không thể. Vì vậy, thiết lập các móc sau khi bạn gắn nó vào cơ thể. Ngoài ra câu hỏi của bạn sẽ được hưởng lợi từ một số mã và ví dụ về những gì bạn đã thử, và chính xác những gì đang xảy ra. – Dave

+0

Bạn có thể vui lòng đăng đầu ra HTML hiện tại và Tập lệnh của mình không, vui lòng sử dụng để tạo lớp phủ. Có lẽ chúng ta có thể thêm 'setTimeout' nếu bạn muốn loại bỏ nó tự động dựa trên một khoảng thời gian đã qua nếu điều đó là khả thi hoặc chúng ta có thể thêm một sự kiện vào phần tử cha để loại bỏ nó. Nó sẽ làm cho nó dễ dàng hơn nhiều với các mã có liên quan mặc dù. – Nope

Trả lời

19

Bạn phải xóa phần tử khỏi phần tử gốc. Một cái gì đó như thế này:

d = document.getElementById('overlay'); 
d.parentNode.removeChild(d); 

Hoặc bạn chỉ có thể giấu nó:

d.style.display = 'none'; 

Và, oh: bạn có thể thêm mã Javascript vào một yếu tố (mới được tạo ra) bằng cách gán một hàm vào thuộc tính onclick.

d = document.createElement('div'); 
d.onclick = function(e) { this.parentNode.removeChild(this) }; 
1

Không sử dụng trình xử lý onclick trong thẻ, sử dụng các hàm sự kiện Javascripts chẳng hạn như addEventListener để tự động thêm sự kiện vào các phần tử. Bạn cũng nên chắc chắn rằng khi bạn loại bỏ các yếu tố bạn làm sạch đúng tất cả các tài liệu tham khảo của bạn (nói cách khác, unregister xử lý sự kiện).

+0

Downvote tâm xây dựng? –

0

Tôi đã có nó :) Tôi đã làm điều đó như bart buồn, nhưng nó không hoạt động. mã của tôi trông giống như sau:

image.onclick = function(){ *create overlay*}; 
overlay.oncklick = function() {*overlay.parentNode.removeChild(overlay)*}; 

trình duyệt sẽ giống như wtf? gây ra nó đọc mã và nghĩ rằng "tôi không thể kiểm tra nếu người dùng đã nhấp vào một phần tử không tồn tại." Vì vậy, tôi đã làm điều này:

image.onclick = function(){ 

*create overlay* 

overlay.onclick = function() {*remove overlay*}; 
}; 
+0

thnx mọi người! – Sam

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