3449 Stimmen

Wie kann ich die Klasse eines Elements mit JavaScript ändern?

Wie kann ich die Klasse eines HTML-Elements als Reaktion auf eine onclick oder andere Ereignisse mit JavaScript?

33 Stimmen

"Das class-Attribut wird meist verwendet, um auf eine Klasse in einem Stylesheet zu verweisen. Es kann jedoch auch von einem JavaScript (über das HTML-DOM) verwendet werden, um Änderungen an HTML-Elementen mit einer bestimmten Klasse vorzunehmen." - w3schools.com/tags/att_standard_class.asp

25 Stimmen

element.setAttribute(name, value); Ersetzen Sie name con class . Ersetzen Sie value mit dem Namen, den Sie der Klasse gegeben haben, eingeschlossen in Anführungszeichen. Dadurch wird vermieden, dass Sie die aktuelle Klasse löschen und eine andere hinzufügen müssen. Dies jsFiddle-Beispiel zeigt einen vollständig funktionierenden Code.

5 Stimmen

Um eine Klasse eines HTML-Elements mit onClick zu ändern, verwenden Sie diesen Code: <input type='button' onclick='addNewClass(this)' value='Create' /> und im Abschnitt javascript: function addNewClass(elem){ elem.className="newClass"; } Online

6voto

finjacore Punkte 71

Für IE v6-9 (bei dem classList nicht unterstützt wird und Sie keine Polyfills verwenden möchten):

var elem = document.getElementById('some-id');

// don't forget the extra space before the class name
var classList = elem.getAttribute('class') + ' other-class-name';

elem.setAttribute('class', classList);

6voto

Kamil Kiełczewski Punkte 69048

Versuchen Sie es:

element.className='second'

function change(box) { box.className='second' }

.first  { width:  70px; height:  70px; background: #ff0                 }
.second { width: 150px; height: 150px; background: #f00; transition: 1s }

<div onclick="change(this)" class="first">Click me</div>

5voto

Alireza Punkte 92209

OK, ich denke, in diesem Fall sollten Sie jQuery verwenden oder Ihre eigenen Methoden in reinem JavaScript schreiben. Ich bevorzuge es, meine eigenen Methoden hinzuzufügen, anstatt jQuery in meine Anwendung zu injizieren, wenn ich das nicht aus anderen Gründen brauche.

Ich möchte etwas wie unten als Methoden zu meinem JavaScript-Framework zu tun, um einige Funktionalitäten, die Hinzufügen von Klassen, Löschen von Klassen, etc. behandeln hinzuzufügen. Ähnlich wie jQuery, ist dies vollständig in IE9+ unterstützt. Auch mein Code ist in ES6 geschrieben, so müssen Sie sicherstellen, dass Ihr Browser unterstützt es oder Sie mit etwas wie Babel sonst müssen Sie die ES5-Syntax in Ihrem Code verwenden. Auch auf diese Weise finden wir Elemente über ID, was bedeutet, dass das Element eine ID haben muss, um ausgewählt zu werden:

// Simple JavaScript utilities for class management in ES6
var classUtil = {

  addClass: (id, cl) => {
    document.getElementById(id).classList.add(cl);
  },

  removeClass: (id, cl) => {
    document.getElementById(id).classList.remove(cl);
  },

  hasClass: (id, cl) => {
    return document.getElementById(id).classList.contains(cl);
  },

  toggleClass: (id, cl) => {
    document.getElementById(id).classList.toggle(cl);
  }

}

Und Sie können sie einfach wie unten beschrieben verwenden. Stellen Sie sich vor, Ihr Element hat eine id von "id" und eine class von "class". Stellen Sie sicher, dass Sie sie als String übergeben. Sie können das Dienstprogramm wie unten beschrieben verwenden:

classUtil.addClass('myId', 'myClass');
classUtil.removeClass('myId', 'myClass');
classUtil.hasClass('myId', 'myClass');
classUtil.toggleClass('myId', 'myClass');

4voto

Willem van der Veen Punkte 26043

classList DOM API:

Eine sehr praktische Methode zum Hinzufügen und Entfernen von Klassen ist die classList DOM API. Diese API ermöglicht es uns, alle Klassen eines bestimmten DOM-Elements auszuwählen, um die Liste mit JavaScript zu ändern. Zum Beispiel:

const el = document.getElementById("main");
console.log(el.classList);

<div class="content wrapper animated" id="main"></div>

Dem Protokoll können wir entnehmen, dass wir ein Objekt zurückerhalten, das nicht nur die Klassen des Elements, sondern auch viele Hilfsmethoden und Eigenschaften enthält. Dieses Objekt erbt von der Schnittstelle DOMTokenList eine Schnittstelle, die im DOM verwendet wird, um eine Menge von durch Leerzeichen getrennten Token (wie Klassen) darzustellen.

Beispiel:

const el = document.getElementById('container');

function addClass () {
    el.classList.add('newclass');
}

function replaceClass () {
    el.classList.replace('foo', 'newFoo');
}

function removeClass () {
    el.classList.remove('bar');
}

button{
  margin: 20px;
}

.foo{
  color: red;
}

.newFoo {
  color: blue;
}

.bar{
  background-color: powderblue;
}

.newclass{
  border: 2px solid green;
}

<div class="foo bar" id="container">
  "Sed ut perspiciatis unde omnis
  iste natus error sit voluptatem accusantium doloremque laudantium,
  totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et
  quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam
  voluptatem quia voluptas
 </div>

<button onclick="addClass()">AddClass</button>

<button onclick="replaceClass()">ReplaceClass</button>

<button onclick="removeClass()">removeClass</button>

4voto

Danish Khan Punkte 199

Ja, es gibt viele Möglichkeiten, dies zu tun. In der ES6-Syntax können wir dies leicht erreichen. Verwenden Sie diesen Code toggle hinzufügen und entfernen Klasse.

const tabs=document.querySelectorAll('.menu li');

for(let tab of tabs){

  tab.onclick = function(){

    let activetab = document.querySelectorAll('li.active');

    activetab[0].classList.remove('active')

    tab.classList.add('active');
  }

}

body {
    padding: 20px;
    font-family: sans-serif;
}

ul {
    margin: 20px 0;
    list-style: none;
}

li {
    background: #dfdfdf;
    padding: 10px;
    margin: 6px 0;
    cursor: pointer;
}

li.active {
    background: #2794c7;
    font-weight: bold;
    color: #ffffff;
}

<i>Please click an item:</i>

<ul class="menu">
  <li class="active"><span>Three</span></li>
  <li><span>Two</span></li>
  <li><span>One</span></li>
</ul>

0 Stimmen

Was meinen Sie mit "Mit diesem Code können Sie die Klasse hinzufügen und entfernen." ? Er scheint unverständlich zu sein. Fehlt z. B. eine Interpunktion? Bitte antworten Sie mit Bearbeitung (Änderung) Ihrer Antwort , nicht hier in den Kommentaren ( ohne "Bearbeiten:", "Aktualisieren:" oder ähnlich - die Antwort sollte so aussehen, als wäre sie heute geschrieben worden).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X