Trong bài hướng dẫn trước, tôi đã hướng dẫn cách thiết lập style trong JavaScript, như thế này.
Bây giờ, nếu thiết lập nhiều style trong JavaScript, ta sẽ phải
viết hàng trăm dòng mã chỉ để thiết lập các giá trị tính chất CSS.
Đó sẽ là một mớ bòng bong thực sự đấy.
Còn một cách khác mà ta có thể áp dụng.
Ta có thể tạo một class CSS,
và thêm một quy tắc CSS cho class đó với những style mới mà ta muốn,
rồi chủ động thêm tên class đó vào JavaScript.
Ta cùng bắt đầu trên này với tag ``.
Ta tạo một class `.catcolors`, và tạo quy tắc CSS cho class đó.
Và class sẽ có `color: orange`, và `background-color: black`.
Bây giờ để gán vào phần tử `heading`, ta có thể nhập:
`headingEl.className = "catcolors";
Ta có thể xóa mã gán màu
và màu nền trong JavaScript.
Ta-da!
Thành công rồi.
Các bạn có thấy gì kỳ lạ không?
Thuộc tính HTML cho các tên class chỉ là `class`.
Nếu tôi thực hiện trong HTML, nó sẽ là `class=”catcolors”`.
Nhưng khi thực hiện trong JavaScript, tôi phải nhập `.className`,
chúng ta không quen với cái đó.
Thực chất đó là bởi `class` là một từ khóa trong ngôn ngữ JavaScript
và mang ý nghĩa đặc biệt đối với ngôn ngữ đó.
Vì vậy, các trình duyệt quyết định sử dụng `className` để tham chiếu
thuộc tính class HTML, với mục đích đảm bảo rằng chúng không bị nhầm lẫn.
Hãy nhớ rằng, nếu muốn thiết lập thuộc tính class của mộ t phần tử,
ta nhập .className =.
Bây giờ để gán cho từng tên động vật,
ta có thể đặt nó vào trong vòng lặp, vậy là:
`nameEls[i].className = "catColors";`
Thao tác đó sẽ thêm tên class, nhưng thực ra nó sẽ loại bỏ bất kỳ class nào
đã từng ở vị trí này trước đó, vì ta đã nói là = mà.
Vậy nếu trước đó ta đã có bất kỳ class nào ở vị trí này, chúng đều sẽ biến mất.
Đúng là trước đó ta từng có class ở đó thật, class = animal.
Và nó đã chuyển thành catColors.
Như vậy, ta cần phải thêm một tên class mới vào thuộc tính class này.
Ta có thể làm điều đó bằng cách nhập += “ catColors”.
Được rồi đó.
Đây là phương pháp an toàn, vì nó sẽ lấy
bất kỳ class nào trước đó, thêm một dấu cách và đến class mới.
Ta còn một cách nữa có thể áp dụng cho những trình duyệt mới hơn,
sử dụng tính chất `classList`.
Để thực hiện điều đó, ta nhập: `nameEIs[i].classList.add(“catColors”);`.
Như vậy đẹp hơn rất nhiều, nhưng không phải ở đâu cũng áp dụng được.
Vì vậy nếu muốn sử dụng, các bạn phải đi tới caniuse.com,
và đảm bảo nó được hỗ trợ trong tất cả các trình duyệt
mà các bạn muốn trang web của mình hoạt động.
Nó đẹp hơn rất nhiều, nhưng sẽ không đẹp chút nào nếu trang web vỡ tan tành
vì ta đang sử dụng một hàm mà trình duyệt không biết tới.
Tôi sẽ chú thích ở đây vậy.
Vì tôi muốn trang web của tôi hoạt động trên nhiều trình duyệt khác nhau.
Vẫn sẽ có nhiều lúc ta muốn thay đổi style cá nhân,
thay vì gán tên class.
Một lần nữa, hãy nhớ rằng các bạn có trong tầm tay cả hai công cụ này,
và lựa chọn cho mình công cụ phù hợp nhất tùy theo tình hình.