Ngoài ra, tôi cũng không chắc làm thế nào để phá hủy nó bên ngoài, trong trường hợp tôi muốn dừng nó trước khi nó đạt đến 10
Giải pháp tốt nhất
Để xóa một phiên bản, trong JavaScript, bạn xóa tất cả các tham chiếu trỏ đến phiên bản đó để trình thu gom rác có thể lấy lại phiên bản đó
Điều này có nghĩa là bạn phải biết các biến chứa các tham chiếu đó
Nếu bạn vừa gán nó cho biến
x = undefined;
0, bạn có thể làmx = null;
hoặc là
x = undefined;
hoặc là
delete window.x;
nhưng cái cuối cùng, như Ian đã chỉ ra, chỉ có thể hoạt động nếu bạn xác định x là một thuộc tính rõ ràng của
x = undefined;
1Giải pháp liên quan
Javascript – Cách thay đổi lớp của phần tử bằng JavaScript
Kỹ thuật HTML5 hiện đại để thay đổi lớp
Các trình duyệt hiện đại đã thêm classList cung cấp các phương thức giúp thao tác với các lớp dễ dàng hơn mà không cần thư viện
document.getElementById["MyElement"].classList.add['MyClass'];
document.getElementById["MyElement"].classList.remove['MyClass'];
if [ document.getElementById["MyElement"].classList.contains['MyClass'] ]
document.getElementById["MyElement"].classList.toggle['MyClass'];
Thật không may, những thứ này không hoạt động trong Internet Explorer trước v10, mặc dù có một miếng đệm để thêm hỗ trợ cho IE8 và IE9, có sẵn từ trang này. Tuy nhiên, nó ngày càng nhiều
Giải pháp đa trình duyệt đơn giản
Cách JavaScript tiêu chuẩn để chọn một phần tử là sử dụng
x = undefined;
2, đây là cách mà các ví dụ sau sử dụng - tất nhiên bạn có thể lấy các phần tử theo những cách khác và trong tình huống phù hợp, bạn có thể chỉ cần sử dụng x = undefined;
3 thay thế - tuy nhiên, việc đi sâu vào chi tiết về điều này là không thể Để thay đổi tất cả các lớp cho một phần tử
Để thay thế tất cả các lớp hiện có bằng một hoặc nhiều lớp mới, hãy đặt thuộc tính className
________số 8_______[Bạn có thể sử dụng danh sách được phân cách bằng dấu cách để áp dụng nhiều lớp. ]
Để thêm một lớp bổ sung vào một phần tử
Để thêm một lớp vào một phần tử mà không xóa/ảnh hưởng đến các giá trị hiện có, hãy thêm một khoảng trắng và tên lớp mới, như vậy
document.getElementById["MyElement"].className += " MyClass";
Để xóa một lớp khỏi một phần tử
Để xóa một lớp đơn lẻ thành một phần tử mà không ảnh hưởng đến các lớp tiềm năng khác, cần phải thay thế biểu thức chính quy đơn giản
document.getElementById["MyElement"].className =
document.getElementById["MyElement"].className.replace
[ /[?:^|\s]MyClass[?!\S]/g , '' ]
/* Code wrapped for readability - above is all one statement */
Một lời giải thích của regex này là như sau
[?:^|\s] # Match the start of the string or any single whitespace character
MyClass # The literal text for the classname to remove
[?!\S] # Negative lookahead to verify the above is the whole classname
# Ensures there is no non-space character following
# [i.e. must be the end of the string or space]
Cờ
x = undefined;
4 yêu cầu thay thế lặp lại theo yêu cầu, trong trường hợp tên lớp đã được thêm nhiều lầnĐể kiểm tra xem một lớp đã được áp dụng cho một phần tử chưa
Biểu thức chính được sử dụng ở trên để xóa một lớp cũng có thể được sử dụng để kiểm tra xem một lớp cụ thể có tồn tại hay không
if [ document.getElementById["MyElement"].className.match[/[?:^|\s]MyClass[?!\S]/] ]
### Chỉ định các hành động này cho các sự kiện title
Mặc dù có thể viết JavaScript trực tiếp bên trong các thuộc tính sự kiện HTML [chẳng hạn như
x = undefined;
5] nhưng đây không phải là hành vi được khuyến nghị. Đặc biệt trên các ứng dụng lớn hơn, mã dễ bảo trì hơn đạt được bằng cách tách phần đánh dấu HTML khỏi logic tương tác JavaScriptBước đầu tiên để đạt được điều này là tạo một hàm và gọi hàm đó trong thuộc tính title chẳng hạn
x = null;
0[Không bắt buộc phải có mã này trong thẻ tập lệnh, đây chỉ đơn giản là ví dụ ngắn gọn và bao gồm JavaScript trong một tệp riêng biệt có thể phù hợp hơn. ]
Bước thứ hai là di chuyển sự kiện title ra khỏi HTML và chuyển sang JavaScript, chẳng hạn như sử dụng addEventListener
x = null;
1[Lưu ý rằng cửa sổ. phần onload là bắt buộc để nội dung của hàm đó được thực thi sau khi HTML tải xong - nếu không có phần này, MyElement có thể không tồn tại khi mã JavaScript được gọi, do đó dòng đó sẽ bị lỗi. ]
Thư viện và khung JavaScript
Đoạn mã trên đều ở dạng JavaScript tiêu chuẩn, tuy nhiên, thông thường người ta sử dụng khung hoặc thư viện để đơn giản hóa các tác vụ thông thường, cũng như hưởng lợi từ các lỗi đã sửa và các trường hợp cạnh mà bạn có thể không nghĩ đến khi viết mã của mình
Mặc dù một số người cho rằng việc thêm khung ~50 KB chỉ để thay đổi một lớp là quá mức cần thiết, nhưng nếu bạn đang thực hiện bất kỳ khối lượng đáng kể nào đối với JavaScript hoặc bất kỳ thứ gì có thể có hành vi bất thường trên nhiều trình duyệt, thì bạn nên cân nhắc
[Đại khái, thư viện là một bộ công cụ được thiết kế cho một nhiệm vụ cụ thể, trong khi một khung thường chứa nhiều thư viện và thực hiện một bộ nhiệm vụ hoàn chỉnh. ]
Các ví dụ trên đã được sao chép bên dưới bằng cách sử dụng jQuery, có lẽ là thư viện JavaScript được sử dụng phổ biến nhất [mặc dù cũng có những ví dụ khác đáng để nghiên cứu]
[Lưu ý rằng
x = undefined;
6 ở đây là đối tượng jQuery. ]Thay đổi lớp học với jQuery
x = null;
2Ngoài ra, jQuery cung cấp lối tắt để thêm một lớp nếu nó không áp dụng hoặc xóa một lớp không áp dụng.
x = null;
3### Gán chức năng cho sự kiện nhấp chuột bằng jQuery.
x = null;
4hoặc, không cần id
x = null;
5Javascript – Xóa các phần tử mảng trong JavaScript – xóa vs nối
x = undefined;
7 sẽ xóa thuộc tính đối tượng, nhưng sẽ không lập chỉ mục lại mảng hoặc cập nhật độ dài của mảng. Điều này làm cho nó xuất hiện như thể nó không được xác địnhx = null;
6Lưu ý rằng trên thực tế nó không được đặt thành giá trị
x = undefined;
8, thay vào đó, thuộc tính bị xóa khỏi mảng, làm cho nó có vẻ không xác định. Các công cụ dành cho nhà phát triển của Chrome làm rõ sự khác biệt này bằng cách in x = undefined;
9 khi ghi nhật ký mảng