Cara menggunakan if classlist javascript

Example

Add a "myStyle" class to an element:

const list = element.classList;
list.add["myStyle"];

Try it Yourself »

Remove the "myStyle" class from an element:

const list = element.classList;
list.remove["myStyle"];

Try it Yourself »

Toggle "myStyle" on and off:

const list = element.classList;
list.toggle["myStyle"];

Try it Yourself »

More examples below.

Definition and Usage

The classList property returns the CSS classnames of an element.

The classList property returns a DOMTokenList.

Syntax

Return Value

Type Description
Object A DOMTokenList.
A list of the class names of an element.

Note

The classList property is read-only, but you can use the methods listed below, to add, toggle or remove CSS classes from the list:

classList Properties and Methods

NameDescription
add[] Adds one or more tokens to the list
contains[] Returns true if the list contains a class
entries[] Returns an Iterator with key/value pairs from the list
forEach[] Executes a callback function for each token in the list
item[] Returns the token at a specified index
keys[] Returns an Iterator with the keys in the list
length Returns the number of tokens in the list
remove[] Removes one or more tokens from the list
replace[] Replaces a token in the list
supports[] Returns true if a token is one of an attribute's supported tokens
toggle[] Toggles between tokens in the list
value Returns the token list as a string
values[] Returns an Iterator with the values in the list

More Examples

Add multiple classes to the an element:

element.classList.add["myStyle", "anotherClass", "thirdClass"];

Try it Yourself »

Remove multiple classes from an element:

element.classList.remove["myStyle", "anotherClass", "thirdClass"];

Try it Yourself »

How many class names the element have:

let numb = element.classList.length;

Try it Yourself »

Get the class names of the "myDIV" element:


I am myDIV.


const list = document.getElementById["myDIV"].classList;

Try it Yourself »

Get the first class of an element:

let className = element.classList.item[0];

Try it Yourself »

Does an an element has a "myStyle" class?

let x = element.classList.contains["myStyle"];

Try it Yourself »

Remove "anotherClass" if an element has a "myStyle" class.

if [element.classList.contains["mystyle"]] {
  element.classList.remove["anotherClass"];
}

Try it Yourself »

Toggle between classes to create a dropdown button:

document.getElementById["myBtn"]. title = function[] {myFunction[]};

function myFunction[] {
  document.getElementById["myDropdown"].classList.toggle["show"];
}

Try it Yourself »

Create a sticky navigation bar:

// Get the navbar
const navbar = document.getElementById["navbar"];

// Get the offset position of the navbar
const sticky = navbar.offsetTop;

// Add the sticky class to the navbar when you reach its scroll position
// Remove it when you leave the scroll position
function myFunction[] {
  if [window.pageYOffset  >= sticky] {
    navbar.classList.add["sticky"]
  } else {
    navbar.classList.remove["sticky"];
  }
}

Try it Yourself »

Browser Support

element.classList is supported in all browsers:

Chrome IE Edge Firefox Safari Opera
Yes 10-11 Yes Yes Yes Yes

Table of Contents

  • Teknik HTML5 modern untuk mengubah kelas
  • Solusi lintas-browser sederhana
  • Untuk mengubah semua kelas untuk suatu elemen:
  • Untuk menambahkan kelas tambahan ke elemen:
  • Untuk menghapus kelas dari suatu elemen:
  • Untuk memeriksa apakah kelas sudah diterapkan ke elemen:
  • Menetapkan tindakan ini untuk mengeklik acara:
  • Kerangka dan Perpustakaan JavaScript
  • Mengubah Kelas dengan jQuery:
  • Menetapkan fungsi ke acara klik dengan jQuery:
  • Ubah kelas elemen dalam JavaScript vanilla dengan dukungan IE6
  • style vs. classList
  • Contoh Gaya
  • Contoh classList
  • Menghapus class-b
  • Menambahkan class-c
  • classList API DOM:

Bagaimana saya bisa mengubah kelas elemen HTML dalam menanggapi suatu titleperistiwa menggunakan JavaScript?

Jawaban:

Teknik HTML5 modern untuk mengubah kelas

Browser modern telah menambahkan classList yang menyediakan metode untuk membuatnya lebih mudah untuk memanipulasi kelas tanpa perlu perpustakaan:

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'];

Sayangnya, ini tidak berfungsi di Internet Explorer sebelum v10, meskipun ada shim untuk menambahkan dukungan untuk itu ke IE8 dan IE9, tersedia dari halaman ini . Namun, semakin banyak didukung .

Solusi lintas-browser sederhana

Cara standar JavaScript untuk memilih elemen menggunakan document.getElementById["Id"], yang digunakan contoh-contoh berikut - Anda tentu saja dapat memperoleh elemen dengan cara lain, dan dalam situasi yang tepat dapat menggunakan thissaja - namun, memerinci hal ini berada di luar cakupan jawabannya.

Untuk mengubah semua kelas untuk suatu elemen:

Untuk mengganti semua kelas yang ada dengan satu atau lebih kelas baru, setel atribut className:

document.getElementById["MyElement"].className = "MyClass";

[Anda dapat menggunakan daftar yang dibatasi ruang untuk menerapkan beberapa kelas.]

Untuk menambahkan kelas tambahan ke elemen:

Untuk menambahkan kelas ke elemen, tanpa menghapus / memengaruhi nilai yang ada, tambahkan spasi dan nama kelas baru, seperti:

document.getElementById["MyElement"].className += " MyClass";

Untuk menghapus kelas dari suatu elemen:

Untuk menghapus satu kelas ke suatu elemen, tanpa mempengaruhi kelas potensial lainnya, diperlukan penggantian regex sederhana:

document.getElementById["MyElement"].className =
   document.getElementById["MyElement"].className.replace
      [ /[?:^|\s]MyClass[?!\S]/g , '' ]
/* Code wrapped for readability - above is all one statement */

Penjelasan dari regex ini adalah sebagai berikut:

[?:^|\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 end of string or a space]

Itu g bendera menceritakan ganti untuk mengulang seperti yang diperlukan, dalam hal nama kelas telah ditambahkan beberapa kali.

Untuk memeriksa apakah kelas sudah diterapkan ke elemen:

Regex yang sama yang digunakan di atas untuk menghapus kelas juga dapat digunakan sebagai pemeriksaan apakah kelas tertentu ada:

if [ document.getElementById["MyElement"].className.match[/[?:^|\s]MyClass[?!\S]/] ]

Menetapkan tindakan ini untuk mengeklik acara:

Meskipun dimungkinkan untuk menulis JavaScript langsung di dalam atribut acara HTML [seperti title="this.className+=' MyClass'" ], ini bukan perilaku yang disarankan. Terutama pada aplikasi yang lebih besar, kode yang lebih dapat dikelola dicapai dengan memisahkan markup HTML dari logika interaksi JavaScript.

Langkah pertama untuk mencapai ini adalah dengan membuat fungsi, dan memanggil fungsi di atribut title, misalnya:


    function changeClass[]{
        // Code examples from above
    }

...
My Button

[Tidak perlu memiliki kode ini dalam tag skrip, ini hanya untuk singkatnya contoh, dan termasuk JavaScript dalam file yang berbeda mungkin lebih tepat.]

Langkah kedua adalah memindahkan acara title dari HTML dan ke JavaScript, misalnya menggunakan addEventListener


    function changeClass[]{
        // Code examples from above
    }

    window.onload = function[]{
        document.getElementById["MyElement"].addEventListener[ 'click', changeClass];
    }

...
My Button

[Perhatikan bahwa bagian window.onload diperlukan agar konten fungsi tersebut dieksekusi setelah HTML selesai memuat - tanpa ini, MyElement mungkin tidak ada ketika kode JavaScript dipanggil, sehingga baris akan gagal.]

Kerangka dan Perpustakaan JavaScript

Kode di atas semuanya dalam JavaScript standar, namun itu adalah praktik umum untuk menggunakan kerangka kerja atau pustaka untuk menyederhanakan tugas-tugas umum, serta mendapat manfaat dari bug tetap dan kasus tepi yang mungkin tidak Anda pikirkan ketika menulis kode Anda.

Sementara beberapa orang menganggap itu berlebihan untuk menambahkan kerangka ~ 50 KB hanya untuk mengubah kelas, jika Anda melakukan sejumlah besar pekerjaan JavaScript, atau apa pun yang mungkin memiliki perilaku lintas-browser yang tidak biasa, ada baiknya mempertimbangkan.

[Secara kasar, perpustakaan adalah seperangkat alat yang dirancang untuk tugas tertentu, sementara kerangka kerja umumnya berisi beberapa perpustakaan dan melakukan serangkaian tugas lengkap.]

Contoh di atas telah direproduksi di bawah ini menggunakan jQuery , mungkin pustaka JavaScript yang paling umum digunakan [meskipun ada juga yang layak diselidiki].

[Perhatikan bahwa di $sini adalah objek jQuery.]

Mengubah Kelas dengan jQuery:

$['#MyElement'].addClass['MyClass'];

$['#MyElement'].removeClass['MyClass'];

if [ $['#MyElement'].hasClass['MyClass'] ]

Selain itu, jQuery menyediakan pintasan untuk menambahkan kelas jika tidak berlaku, atau menghapus kelas yang:

$['#MyElement'].toggleClass['MyClass'];

Menetapkan fungsi ke acara klik dengan jQuery:

$['#MyElement'].click[changeClass];

atau, tanpa perlu id:

$[':button:contains[My Button]'].click[changeClass];

Anda juga bisa melakukan:

document.getElementById['id'].classList.add['class'];
document.getElementById['id'].classList.remove['class'];

Dan untuk beralih kelas [hapus jika ada yang lain tambahkan]:

document.getElementById['id'].classList.toggle['class'];

Di salah satu proyek lama saya yang tidak menggunakan jQuery, saya membangun fungsi berikut untuk menambah, menghapus, dan memeriksa apakah elemen memiliki kelas:

function hasClass[ele, cls] {
    return ele.className.match[new RegExp['[\\s|^]' + cls + '[\\s|$]']];
}
function addClass[ele, cls] {
    if [!hasClass[ele, cls]] ele.className += " " + cls;
}
function removeClass[ele, cls] {
    if [hasClass[ele, cls]] {
        var reg = new RegExp['[\\s|^]' + cls + '[\\s|$]'];
        ele.className = ele.className.replace[reg, ' '];
    }
}

Jadi, misalnya, jika saya ingin titlemenambahkan beberapa kelas ke tombol saya dapat menggunakan ini:


    function changeClass[btn, cls] {
        if[!hasClass[btn, cls]] {
            addClass[btn, cls];
        }
    }

...
My Button

Sekarang pasti akan lebih baik menggunakan jQuery.

Anda dapat menggunakan node.classNameseperti ini:

document.getElementById['foo'].className = 'bar';

Ini harus bekerja di IE5.5 dan lebih tinggi sesuai dengan PPK .

Wow, terkejut ada begitu banyak jawaban berlebihan di sini ...

Menggunakan kode JavaScript murni:

function hasClass[ele, cls] {
    return ele.className.match[new RegExp['[\\s|^]' + cls + '[\\s|$]']];
}

function addClass[ele, cls] {
    if [!this.hasClass[ele, cls]] ele.className += " " + cls;
}

function removeClass[ele, cls] {
    if [hasClass[ele, cls]] {
        var reg = new RegExp['[\\s|^]' + cls + '[\\s|$]'];
        ele.className = ele.className.replace[reg, ' '];
    }
}

function replaceClass[ele, oldClass, newClass]{
    if[hasClass[ele, oldClass]]{
        removeClass[ele, oldClass];
        addClass[ele, newClass];
    }
    return;
}

function toggleClass[ele, cls1, cls2]{
    if[hasClass[ele, cls1]]{
        replaceClass[ele, cls1, cls2];
    }else if[hasClass[ele, cls2]]{
        replaceClass[ele, cls2, cls1];
    }else{
        addClass[ele, cls1];
    }
}

Ini bekerja untuk saya:

function setCSS[eleID] {
    var currTabElem = document.getElementById[eleID];

    currTabElem.setAttribute["class", "some_class_name"];
    currTabElem.setAttribute["className", "some_class_name"];
}

Anda juga dapat memperluas objek HTMLElement, untuk menambahkan metode untuk menambah, menghapus, beralih dan memeriksa kelas [ inti ]:

HTMLElement = typeof[HTMLElement] != 'undefiend' ? HTMLElement : Element;

HTMLElement.prototype.addClass = function[string] {
  if [![string instanceof Array]] {
    string = string.split[' '];
  }
  for[var i = 0, len = string.length; i 

Bài mới nhất

Chủ Đề