Kann mir jemand mitteilen, wie eine Klasse für ein Element nur mit JavaScript entfernt werden kann? Bitte geben Sie mir keine Antwort mit jQuery, da ich es nicht verwenden kann und nichts darüber weiß.
Die richtige und übliche Vorgehensweise ist die Verwendung von classList
. Es ist jetzt weit verbreitet in der neuesten Version der meisten modernen Browser unterstützt :
ELEMENT.classList.remove("CLASS_NAME");
Dokumentation: https://developer.mozilla.org/en/DOM/element.classList
document.getElementById("MyID").className =
document.getElementById("MyID").className.replace(/\bMyClass\b/,'');
dabei ist MyID
die ID des Elements und MyClass der Name der Klasse, die Sie entfernen möchten.
PDATE: Verwenden Sie zur Unterstützung von Klassennamen, die Bindestrichzeichen enthalten, z. B. "My-Class"
document.getElementById("MyID").className =
document.getElementById("MyID").className
.replace(new RegExp('(?:^|\\s)'+ 'My-Class' + '(?:\\s|$)'), ' ');
Hier ist eine Möglichkeit, diese Funktionalität direkt in alle DOM-Elemente zu integrieren:
HTMLElement.prototype.removeClass = function(remove) {
var newClassName = "";
var i;
var classes = this.className.split(" ");
for(i = 0; i < classes.length; i++) {
if(classes[i] !== remove) {
newClassName += classes[i] + " ";
}
}
this.className = newClassName;
}
function hasClass(ele,cls) {
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function removeClass(ele,cls) {
if (hasClass(ele,cls)) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className=ele.className.replace(reg,' ');
}
}
div.classList.add("foo");
div.classList.remove("foo");
Mehr unter https://developer.mozilla.org/en-US/docs/Web/API/element.classList
Bearbeiten
Okay, komplett neu schreiben. Es ist eine Weile her, ich habe ein bisschen gelernt und die Kommentare haben geholfen.
Node.prototype.hasClass = function (className) {
if (this.classList) {
return this.classList.contains(className);
} else {
return (-1 < this.className.indexOf(className));
}
};
Node.prototype.addClass = function (className) {
if (this.classList) {
this.classList.add(className);
} else if (!this.hasClass(className)) {
var classes = this.className.split(" ");
classes.Push(className);
this.className = classes.join(" ");
}
return this;
};
Node.prototype.removeClass = function (className) {
if (this.classList) {
this.classList.remove(className);
} else {
var classes = this.className.split(" ");
classes.splice(classes.indexOf(className), 1);
this.className = classes.join(" ");
}
return this;
};
// Some browsers don't have a native trim() function
if(!String.prototype.trim) {
Object.defineProperty(String.prototype,'trim', {
value: function() {
return this.replace(/^\s+|\s+$/g,'');
},
writable:false,
enumerable:false,
configurable:false
});
}
// addClass()
// first checks if the class name already exists, if not, it adds the class.
Object.defineProperty(Node.prototype,'addClass', {
value: function(c) {
if(this.className.indexOf(c)<0) {
this.className=this.className+=' '+c;
}
return this;
},
writable:false,
enumerable:false,
configurable:false
});
// removeClass()
// removes the class and cleans up the className value by changing double
// spacing to single spacing and trimming any leading or trailing spaces
Object.defineProperty(Node.prototype,'removeClass', {
value: function(c) {
this.className=this.className.replace(c,'').replace(' ',' ').trim();
return this;
},
writable:false,
enumerable:false,
configurable:false
});
Jetzt können Sie myElement.removeClass('myClass')
aufrufen
oder verkette es: myElement.removeClass("oldClass").addClass("newClass");
Es ist sehr einfach, denke ich.
document.getElementById("whatever").classList.remove("className");
versuchen:
function removeClassName(elem, name){
var remClass = elem.className;
var re = new RegExp('(^| )' + name + '( |$)');
remClass = remClass.replace(re, '$1');
remClass = remClass.replace(/ $/, '');
elem.className = remClass;
}
var element = document.getElementById('example_id');
var remove_class = 'example_class';
element.className = element.className.replace(' ' + remove_class, '').replace(remove_class, '');
Alle diese Antworten sind viel zu kompliziert, versuchen Sie es
var string = "Hello, whats on your mind?";
var new_string = string.replace(', whats on your mind?', '');
Das Ergebnis wäre eine Rückgabe des Strings
Hello
Super einfach. Credits gehen an jondavidjohn Entfernen eines Teils der Zeichenkette in Javascript
Ich benutze diesen JS-Code:
Zuerst erreiche ich alle Klassen, dann setze ich gemäß Index meiner Zielklasse className = "".
Target = document.getElementsByClassName("yourClass")[1];
Target.className="";