දී ඇති මූලද්‍රව්‍යයකට පන්තියක් එකතු කරන්නේ කෙසේද?


1212

මට දැනටමත් පන්තියක් ඇති අංගයක් ඇත:

<div class="someclass">
    <img ... id="image1" name="image1" />
</div>

දැන් මට ජාවාස්ක්‍රිප්ට් ශ්‍රිතයක් නිර්මාණය කිරීමට අවශ්‍ය වන අතර එය පන්තියක් එකතු කරනු ඇත div(ප්‍රතිස්ථාපනය නොව එකතු කරන්න).

මට එය කළ හැක්කේ කෙසේද?


13
2020 හෝ ඊට පසු මෙම ත්‍රෙඩ් එක කියවන ඕනෑම කෙනෙකුට, පැරණි පංතියේ නම ක්‍රමය අතහැර element.classList.add("my-class")ඒ වෙනුවට භාවිතා කරන්න.
පිකාමන්ඩර් 2

Answers:


1967

ඔබ ඉලක්ක කරන්නේ නවීන බ්‍රව්සර් පමණි:

පංතියක් එක් කිරීමට element.classList.add භාවිතා කරන්න :

element.classList.add("my-class");

හා element.classList.remove පන්ති ඉවත් කිරීමට:

element.classList.remove("my-class");

ඔබට ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 9 හෝ ඊට අඩු සහය දැක්වීමට අවශ්‍ය නම්:

classNameමූලද්රව්යයේ දේපල සඳහා ඉඩක් සහ ඔබේ නව පන්තියේ නම එකතු කරන්න . පළමුව, idඔබට පහසුවෙන් යොමු කිරීමක් ලබා ගත හැකි වන පරිදි මූලද්‍රව්‍යය මත තබන්න .

<div id="div1" class="someclass">
    <img ... id="image1" name="image1" />
</div>

ඉන්පසු

var d = document.getElementById("div1");
d.className += " otherclass";

පෙර අවකාශය සටහන් කරන්න otherclass. අවකාශය ඇතුළත් කිරීම වැදගත්ය, එසේ නොමැති නම් එය පන්ති ලැයිස්තුවට පෙර පවතින පන්ති වලට පටහැනි වේ.

MDN හි element.className ද බලන්න .


26
ජාවාස්ක්‍රිප්ට් සමඟ කළ යුතු මුළු පිටුවේම ඇති එකම කාර්යය මෙම පන්තියේ නම එකතු කිරීම නම්, ඔව්. නමුත් මෙය පිටුවේ එකම ගතික කොටස බව මට නොපෙනේ. පුස්තකාලයක් අනෙක් සෑම දෙයකටම උදව් වනු ඇත. 30-50kb jQuery හි සාකච්ඡා කිරීම වටී.
rfunduk

169
"මෙන්ම අන් සියල්ල සමඟ පුස්තකාල උදව් කැමැත්ත" - වෙන් JavaScript ඉගෙන සිට
meouw

20
DOM මූලද්‍රව්‍යයකට පන්තියක් එක් කිරීම භාෂාව ඉගෙනීමට ඇති සම්බන්ධය කුමක්ද? document.getElementById ('div1'). පන්තියේ නම පුස්තකාලයට සම්බන්ධ ගැටළුවක් වන අතර එය කිරීමට jQuery භාවිතා කරයි. ප්රශ්නය වූයේ "මම එය කරන්නේ කෙසේද" යන්නයි, හොඳින් පරීක්ෂා කරන ලද පුස්තකාලයක් යනු බුද්ධිමත් පිළිතුරයි.
rfunduk

7
endthenduks: ජාවාස්ක්‍රිප්ට් බව ඔබ දන්නා බව මට විශ්වාසයි! == jQuery. මෙම ප්‍රශ්නයට පිළිතුරු සඳහා පුස්තකාල සහ පුස්තකාල නොවන විසඳුම් ඇතුළත් වීම හොඳ දෙයකි, මන්ද ඒවා ඉටු කර ගැනීම සඳහා සරලම ක්‍රමය පමණක් නොව දේවල් ක්‍රියාත්මක වන්නේ කෙසේද යන්න දැන ගැනීම වැදගත්ය . මෙම ප්‍රශ්නය javascript ලෙස සටහන් කර ඇති බව ඔබට පෙනෙනු ඇත
meouw

2
oumeouw: මම ඔබ සමඟ එකඟයි. කෙසේ වෙතත්, jQuery ජාවාස්ක්‍රිප්ට් හි ලියා ඇත , එබැවින් පුස්තකාලය හොඳ අදහසක් බව OP ට සඳහන් කිරීම 'රාමුවක් [ඔහුගේ] උගුරෙන් පහළට තල්ලු කිරීම' නොවන බව මම විශ්වාස කරමි. එච්චරයි.
rfunduk

1360

කිසිදු රාමුවක් නොමැතිව මෙය කිරීමට ඇති පහසුම ක්‍රමය වන්නේ element.classList.add ක්‍රමය භාවිතා කිරීමයි .

var element = document.getElementById("div1");
element.classList.add("otherclass");

සංස්කරණය කරන්න: තවද ඔබට මූලද්‍රව්‍යයකින් පන්තිය ඉවත් කිරීමට අවශ්‍ය නම් -

element.classList.remove("otherclass");

මා කැමති හිස් අවකාශයක් සහ අනුපිටපත් ඇතුළත් කිරීම් හසුරුවා නොගැනීමටයි ( document.classNameප්‍රවේශය භාවිතා කරන විට එය අවශ්‍ය වේ ). බ්‍රව්සර් සීමාවන් කිහිපයක් ඇත , නමුත් ඔබට ඒවා වටා පොලිෆිල්ස් භාවිතා කළ හැකිය .


67
IE 10.0 ට පෙර මෙය සහාය නොදැක්වීම ලැජ්ජාවකි, මන්ද එය විශිෂ්ට අංගයක් වන අතර මා නිතර නිතර හමුවන ගැටලුවකට පහසුම විසඳුමයි.
mricci

12
පන්ති ලැයිස්තුව සඳහා බහු පිරවුමක් තිබේ.
wcandillon


11
මෙය භාවිතා කිරීමට හොඳම එකක් ලෙස පෙනේ, අවකාශය ඇති අයට අවම වශයෙන්
හක්ක මෙන් දැනේ

5
IlSilverRingvee අභ්‍යවකාශ ප්‍රවේශයේ තවත් අවදානමක් වන්නේ වෙනත් සංවර්ධකයෙකු එය අත්‍යවශ්‍ය බව නොදැන සිටීම සහ දේවල් පිරිසිදු කිරීම සඳහා එය ඉවත් කිරීමයි.
akauppi

180

ඔබ කැමති පරිදි ඔබේ ඉලක්ක අංගය "d" සොයා ගෙන පසුව:

d.className += ' additionalClass'; //note the space

පූර්ව පැවැත්ම පරීක්ෂා කිරීම සඳහා ඔබට එය වඩාත් පැහැදිලි ආකාරයකින් ඔතා තැබිය හැකිය, සහ අභ්‍යවකාශ අවශ්‍යතා ආදිය පරීක්ෂා කරන්න.


1
මෙම ක්‍රමය භාවිතයෙන් ඉවත් කිරීමටද?
ඩෙත්ග්‍රිප්

3
E ඩීත්ග්‍රිප් සරලවම පන්තිය තනි අර්ථ දක්වා ඇති නමකට සකසන්න d.className = 'originalClass';
TheTechy

TTheTechy - ඔබට තබා ගත යුතු පන්ති එකකට වඩා තිබේ නම් (එය මේ දිනවල බොහෝ දේ සිදුවේ), එය ක්‍රියා නොකරනු ඇත.
මාර්ක් ෂුල්ටිස්

1
පරණ තාලේ ක්‍රමය ඉවත් කිරීම සඳහා, splitසුදු අවකාශයේ ඇති පන්ති නාමය , එහි ප්‍රති ing ලයක් ලෙස ඇති අරාවෙන් ඔබට අවශ්‍ය නැති එක ඉවත් කරන්න, ඉන්පසු joinනැවත අරාව ... හෝ භාවිතා කරන්න element.classList.remove.
ස්ටිජන් ඩි විට්

133

පන්තිය එක් කරන්න

  • හරස් අනුකූල

    පහත සඳහන් උදාහරණය තුළ අපි එකතු classnameකිරීමට <body>අංගයක්. මෙය IE-8 අනුකූල වේ.

    var a = document.body;
    a.classList ? a.classList.add('classname') : a.className += ' classname';

    පහත දැක්වෙන දේ සඳහා මෙය කෙටිමං වේ ..

    var a = document.body;
    if (a.classList) {
        a.classList.add('wait');
    } else {
        a.className += ' wait';
    }

  • කාර්ය සාධනය

    හරස් අනුකූලතාවයට වඩා කාර්ය සාධනය කෙරෙහි ඔබ වැඩි සැලකිල්ලක් දක්වන්නේ නම්, ඔබට එය 4% වේගවත් වන පහත දැක්වෙන පරිදි කෙටි කළ හැකිය.

    var z = document.body;
    document.body.classList.add('wait');

  • පහසුව

    විකල්පයක් ලෙස ඔබට jQuery භාවිතා කළ හැකි නමුත් එහි ප්‍රති performance ලයක් ලෙස ක්‍රියාකාරීත්වය සැලකිය යුතු ලෙස මන්දගාමී වේ. JsPerf අනුව 94% මන්දගාමී වේ

    $('body').addClass('wait');


පන්තිය ඉවත් කිරීම

  • කාර්ය සාධනය

    ඔබ කාර්ය සාධනය ගැන සැලකිලිමත් වන්නේ නම් පංතියක් ඉවත් කිරීම සඳහා හොඳම ක්‍රමය jQuery තෝරා ගැනීමකි

    var a = document.body, c = ' classname';
    $(a).removeClass(c);

  • JQuery නොමැතිව එය 32% මන්දගාමී වේ

    var a = document.body, c = ' classname';
    a.className = a.className.replace( c, '' );
    a.className = a.className + c;

යොමුව

  1. jsPerf පරීක්ෂණ නඩුව: පන්තියක් එකතු කිරීම
  2. jsPerf පරීක්ෂණ නඩුව: පන්තියක් ඉවත් කිරීම

මූලාකෘති භාවිතා කිරීම

Element("document.body").ClassNames.add("classname")
Element("document.body").ClassNames.remove("classname")
Element("document.body").ClassNames.set("classname")

YUI භාවිතා කිරීම

YAHOO.util.Dom.hasClass(document.body,"classname")
YAHOO.util.Dom.addClass(document.body,"classname")
YAHOO.util.Dom.removeClass(document.body,"classname")

වාව් ස්තූතියි :) කෙටිමං අනුවාදයට ( a.classList ? ...) සාමාන්‍ය ( if (a.classList) { ....) හා සසඳන විට වේග වෙනසක් තිබේද?
විල්ෆ්

5
ඔල්සෝ තියෙනවා classList.remove(). ඇයි ඔබ එය භාවිතා නොකළේ? එය jQuery jsperf.com/remove-class-vanilla-vs-jquery
Fez Vrasta

EF 10 ට පෙර eFezVrasta පන්ති ලැයිස්තුවට සහය නොදක්වන අතර එය තවමත් හොඳ වෙළඳපල කොටසක් ඇත (netmarketshare.com හි + 13%).
ඇඩම්

6
D ආදම් ඔහු classListපන්ති ඉවත් කිරීම හැර අන් සියල්ල සඳහා භාවිතා කළේය, මේ නිසා මම එය අසමි .
Fez Vrasta

EzFezVrasta හරස් අනුකූලතාව යටතේ මම භාවිතා කළෙමි .add () නමුත් එය තිබේදැයි පරීක්ෂා කිරීමෙන් පසුව පමණක්, කිකිළිය හරස් අනුකූල වේ. ඉවත් කිරීම සඳහා මම නැවත නැවත කිරීමට කරදර නොවූ නිසා මම බොහෝ විකල්ප ඇතුළත් නොකළෙමි.
davidcondrey

34

පිරිසිදු ජාවාස්ක්‍රිප්ට් භාවිතයෙන් පන්තියට මූලද්‍රව්‍යයට එකතු කිරීමේ තවත් ප්‍රවේශයකි

පන්තිය එකතු කිරීම සඳහා:

document.getElementById("div1").classList.add("classToBeAdded");

පන්තිය ඉවත් කිරීම සඳහා:

document.getElementById("div1").classList.remove("classToBeRemoved");

4
බ්‍රවුසර සහාය සහ ෂිම් පිළිබඳ සාකච්ඡා ඇතුළුව වෙනත් පරිශීලකයින් විසින් එයට දැනටමත් කිහිප වතාවක්ම පිළිතුරු ලබා දී ඇත.
bafromca

@bafromca කලින් පිළිතුර ලබා දී ඇති බවත් එය මගේ වැරැද්ද බවත් මම දුටුවේ නැත. ඔබට මෙම පිළිතුර සලකුණු කළ හැකිය
ෂොයිබ් චිකේට්

3
Ho ෂොයිබ්චිකේට්: ඔබට අවශ්‍ය නම් පිළිතුර මකා දැමිය හැකිය (ඔබ ලකුණු තබා ගනී). මෙම ප්‍රශ්නයේ ඇති කැළඹිලි අඩු කිරීමට උත්සාහ කිරීම; මුළුමනින්ම ඔබට භාරයි.
ඩෑන් ඩස්කල්ස්කු

23

මා කරන වැඩ පුස්තකාලයක් භාවිතා කිරීමට අවශ්‍ය නොවන විට, මම මෙම කාර්යයන් දෙක භාවිතා කරමි:

function addClass( classname, element ) {
    var cn = element.className;
    //test for existance
    if( cn.indexOf( classname ) != -1 ) {
        return;
    }
    //add a space if the element already has class
    if( cn != '' ) {
        classname = ' '+classname;
    }
    element.className = cn+classname;
}

function removeClass( classname, element ) {
    var cn = element.className;
    var rxp = new RegExp( "\\s?\\b"+classname+"\\b", "g" );
    cn = cn.replace( rxp, '' );
    element.className = cn;
}

15
if( cn.indexOf( classname ) != -1 ) { return; } “Btn-info” පන්තිය දැනටමත් මෙහි ඇති බැවින් ඔබ “btn” පන්තිය එකතු කළහොත් මෙය අසමත් වන බවට වග බලා ගන්න.
ඇලෙක්සැන්ඩර් ඩියුලොට්

1
element.className.split(" ");ගැටළුව වළක්වා ගැනීම සඳහා ඔබ භාවිතා කළ යුතුය @AlexandreDieulot මෙහි වාර්තා කර ඇත.
අමීර් ෆෝ

21

ඔබ මෙම එක් පන්තියක් එකතු කරනවාට වඩා වැඩි යමක් කරනවා යැයි උපකල්පනය කරන්න (උදා: ඔබට අසමමුහුර්ත ඉල්ලීම් ලැබී ඇති අතර එසේ ය.), මම නිර්දේශ කරන්නේ මූලාකෘති හෝ jQuery වැනි පුස්තකාලයක් .

මෙය ඔබට කළ යුතු සියල්ල (මෙයද ඇතුළුව) ඉතා සරල කරයි.

එබැවින් අපි දැන් ඔබගේ පිටුවේ jQuery ලබාගෙන ඇති බව කියමු, ඔබට මූලද්‍රව්‍යයකට පන්ති නාමයක් එක් කිරීමට මෙවැනි කේතයක් භාවිතා කළ හැකිය (පැටවීමේදී, මේ අවස්ථාවේ දී):

$(document).ready( function() {
  $('#div1').addClass( 'some_other_class' );
} );

වෙනත් දේවල් සඳහා jQuery API බ්‍රව්සරය බලන්න .


17

මූලද්‍රව්‍යයකින් පන්තියක් එක් කිරීමට / ඉවත් කිරීමට ඔබට classList.add හෝ classList.remove ක්‍රමය භාවිතා කළ හැකිය.

var nameElem = document.getElementById("name")
nameElem.classList.add("anyclss")

ඉහත කේතය "ඕනෑම පන්තියක්" යන නම එලෙම් වෙත එක් කරයි (සහ ප්‍රතිස්ථාපනය නොකරයි). ඒ හා සමානව ඔබට පන්තියක් ඉවත් කිරීමට classList.remove () ක්‍රමය භාවිතා කළ හැකිය.

nameElem.classList.remove("anyclss")

ඉතා හොඳයි, නමුත් IE <= 9 හෝ සෆාරි <= 5.0 ... :( ( caniuse.com/classlist ) හි සහය නොදක්වයි
simon

1
බ්‍රව්සර් සහාය ඇතුළුව මෙය දැනටමත් සාකච්ඡා කර ඇත .
ඩෑන් ඩස්කල්ස්කු

11

මූලද්රව්යයකට අතිරේක පන්තියක් එක් කිරීමට:

මූලද්‍රව්‍යයකට පන්තියක් එක් කිරීමට, පවතින අගයන් ඉවත් නොකර / බලපාන්නේ නැතිව, අවකාශයක් සහ නව පන්ති නාමය එකතු කරන්න,

document.getElementById("MyElement").className += " MyClass";

මූලද්රව්යයක් සඳහා සියලු පන්ති වෙනස් කිරීමට:

පවත්නා සියලුම පන්ති නව පන්ති එකක් හෝ කිහිපයක් සමඟ ප්‍රතිස්ථාපනය කිරීමට, පන්තියේ නම ගුණාංගය සකසන්න:

document.getElementById("MyElement").className = "MyClass";

(ඔබට බහු පන්ති යෙදීම සඳහා අවකාශය වෙන් කළ ලැයිස්තුවක් භාවිතා කළ හැකිය.)


7

ඔබට jQuery භාවිතා කිරීමට අවශ්‍ය නැතිනම් පැරණි බ්‍රව්සර් සඳහා සහය දැක්වීමට අවශ්‍ය නම්:

function addClass(elem, clazz) {
    if (!elemHasClass(elem, clazz)) {
        elem.className += " " + clazz;
    }
}

function elemHasClass(elem, clazz) {
    return new RegExp("( |^)" + clazz + "( |$)").test(elem.className);
}

6

IE9 නිල වශයෙන් වසා දැමීමක් බව මම දනිමි. element.classListඉහත කී බොහෝ දේ සමඟ අපට එය සාක්ෂාත් කරගත හැකි නමුත් ඉහත classListබොහෝ පිළිතුරු වල උපකාරයෙන් තොරව එය ක්‍රියාත්මක වන ආකාරය ඉගෙන ගැනීමට මම උත්සාහ කළෙමි.

පහත කේතය ඉහත බොහෝ පිළිතුරු විස්තාරණය කරන අතර අනුපිටපත් එකතු කිරීමෙන් වැළකී ඒවා වැඩි දියුණු කරයි.

function addClass(element,className){
  var classArray = className.split(' ');
  classArray.forEach(function (className) {
    if(!hasClass(element,className)){
      element.className += " "+className;
    }
  });            
}
//this will add 5 only once
addClass(document.querySelector('#getbyid'),'3 4 5 5 5');

6

Es5 හි මෙන් Element.prototype.classList භාවිතා කිරීම වේගවත්ම ක්‍රමය යැයි මම ද සිතමි: document.querySelector(".my.super-class").classList.add('new-class') නමුත් ie8 හි Element.prototype.classList වැනි දෙයක් නොමැත, කෙසේ වෙතත් ඔබට මෙම ස්නිපටය සමඟ එය බහු පිරවිය හැකිය (සංස්කරණය කිරීමට සහ වැඩිදියුණු කිරීමට නිදහස් විය) ):

if(Element.prototype.classList === void 0){
	function DOMTokenList(classes, self){
		typeof classes == "string" && (classes = classes.split(' '))
		while(this.length){
			Array.prototype.pop.apply(this);
		}
		Array.prototype.push.apply(this, classes);
		this.__self__ = this.__self__ || self
	}

	DOMTokenList.prototype.item = function (index){
		return this[index];
	}

	DOMTokenList.prototype.contains = function (myClass){
		for(var i = this.length - 1; i >= 0 ; i--){
			if(this[i] === myClass){
				return true;
			}
		}
		return false
	}

	DOMTokenList.prototype.add = function (newClass){
		if(this.contains(newClass)){
			return;
		}
		this.__self__.className += (this.__self__.className?" ":"")+newClass;
		DOMTokenList.call(this, this.__self__.className)
	}

	DOMTokenList.prototype.remove = function (oldClass){
		if(!this.contains(newClass)){
			return;
		}
		this[this.indexOf(oldClass)] = undefined
		this.__self__.className = this.join(' ').replace(/  +/, ' ')
		DOMTokenList.call(this, this.__self__.className)
	}

	DOMTokenList.prototype.toggle = function (aClass){
		this[this.contains(aClass)? 'remove' : 'add'](aClass)
		return this.contains(aClass);
	}

	DOMTokenList.prototype.replace = function (oldClass, newClass){
		this.contains(oldClass) && this.remove(oldClass) && this.add(newClass)
	}

	Object.defineProperty(Element.prototype, 'classList', {
		get: function() {
			return new DOMTokenList( this.className, this );
		},
		enumerable: false
	})
}


5

අනෙක් අය පවසා ඇති දේ විස්තාරනය කිරීම සඳහා, සීඑස්එස් පංති කිහිපයක් එක නූලකින් ඒකාබද්ධ කර ඇති අතර ඒවා අවකාශයෙන් වෙන් කර ඇත. මේ අනුව, ඔබට එය තදින් කේත කිරීමට අවශ්‍ය නම්, එය සරලවම පෙනේ:

<div class="someClass otherClass yetAnotherClass">
      <img ... id="image1" name="image1" />
</div>

එතැන් සිට ඔබට නව පංතියක් එක් කිරීමට අවශ්‍ය ජාවාස්ක්‍රිප්ට් පහසුවෙන් ව්‍යුත්පන්න කළ හැකිය ... නව පංතියෙන් පසුව අවකාශයේ අංගයක් පන්තියේ නම ගුණාංගයට එකතු කරන්න. මෙය දැන ගැනීමෙන්, අවශ්‍යතාවයක් ඇති වුවහොත් පසුව පන්තියක් ඉවත් කිරීම සඳහා ශ්‍රිතයක් ලිවිය හැකිය.


5

මූලද්‍රව්‍ය පන්ති සරල ආකාරයකින් එක් කිරීමට, ඉවත් කිරීමට හෝ පරීක්ෂා කිරීමට:

var uclass = {
    exists: function(elem,className){var p = new RegExp('(^| )'+className+'( |$)');return (elem.className && elem.className.match(p));},
    add: function(elem,className){if(uclass.exists(elem,className)){return true;}elem.className += ' '+className;},
    remove: function(elem,className){var c = elem.className;var p = new RegExp('(^| )'+className+'( |$)');c = c.replace(p,' ').replace(/  /g,' ');elem.className = c;}
};

var elem = document.getElementById('someElem');
//Add a class, only if not exists yet.
uclass.add(elem,'someClass');
//Remove class
uclass.remove(elem,'someClass');

5

ඔබට jQuery හා සමාන නවීන ප්‍රවේශයක් භාවිතා කළ හැකිය

ඔබට එක් මූලද්‍රව්‍යයක් පමණක් වෙනස් කිරීමට අවශ්‍ය නම්, පළමුව JS විසින් DOM හි සොයා ගනු ඇත, ඔබට මෙය භාවිතා කළ හැකිය:

document.querySelector('.someclass').className += " red";
.red {
  color: red;
}
<div class="someclass">
  <p>This method will add class "red" only to first element in DOM</p>
</div>

<div class="someclass">
  <p>lorem ipsum</p>
</div>

<div class="someclass">
  <p>lorem ipsum</p>
</div>

<div class="someclass">
  <p>lorem ipsum</p>
</div>

පන්ති නාමයට පෙර එක් ඉඩක් තැබීමට මතක තබා ගන්න .

ඔබට නව පංතියක් එක් කිරීමට අවශ්‍ය පන්ති කිහිපයක් තිබේ නම්, ඔබට එය මේ ආකාරයෙන් භාවිතා කළ හැකිය

document.querySelectorAll('.someclass').forEach(function(element) {
  element.className += " red";
});
.red {
  color: red;
}
<div class="someclass">
  <p>This method will add class "red" to all elements in DOM that have "someclass" class.</p>
</div>

<div class="someclass">
  <p>lorem ipsum</p>
</div>

<div class="someclass">
  <p>lorem ipsum</p>
</div>

<div class="someclass">
  <p>lorem ipsum</p>
</div>


4

මම හිතන්නේ බ්‍රව්සරයේ DOM මත ධාවනය කළ හැකි පිරිසිදු ජාවාස්ක්‍රිප්ට් භාවිතා කිරීම වඩා හොඳය.

මෙන්න එය භාවිතා කිරීමට ක්රියාකාරී ක්රමය. මම ES6 භාවිතා කර ඇති නමුත් ඔබේ ජාවාස්ක්‍රිප්ට් ස්ටයිල්ගුයිඩ් වලට ගැලපෙන ඕනෑම දෙයක් ES5 සහ ක්‍රියාකාරී ප්‍රකාශනය හෝ ක්‍රියාකාරී අර්ථ දැක්වීම භාවිතා කිරීමට නිදහස්ව සිටින්න.

'use strict'

const oldAdd = (element, className) => {
  let classes = element.className.split(' ')
  if (classes.indexOf(className) < 0) {
    classes.push(className)
  }
  element.className = classes.join(' ')
}

const oldRemove = (element, className) => {
  let classes = element.className.split(' ')
  const idx = classes.indexOf(className)
  if (idx > -1) {
    classes.splice(idx, 1)
  }
  element.className = classes.join(' ')
}

const addClass = (element, className) => {
  if (element.classList) {
    element.classList.add(className)
  } else {
    oldAdd(element, className)
  }
}

const removeClass = (element, className) => {
  if (element.classList) {
    element.classList.remove(className)
  } else {
    oldRemove(element, className)
  }
}


3

පිරිසිදු JS සමඟ නියැදිය. පළමු උදාහරණයේ දී අපි අපගේ මූලද්‍රව්‍යයේ හැඳුනුම්පත ලබාගෙන උදා 2 පන්ති එකතු කරමු.

document.addEventListener('DOMContentLoaded', function() {
    document.getElementsById('tabGroup').className = "anyClass1 anyClass2";
})

දෙවන උදාහරණයේ දී අපි මූලද්‍රව්‍යයේ පන්තියේ නම ලබාගෙන තවත් 1 ක් එකතු කරමු.

document.addEventListener('DOMContentLoaded', function() {
    document.getElementsByClassName('tabGroup')[0].className = "tabGroup ready";
})

2

ලොඩාෂ් භාවිතා කරන සහ classNameනූල් යාවත්කාලීන කිරීමට කැමති අය සඳහා :

// get element reference
var elem = document.getElementById('myElement');

// add some classes. Eg. 'nav' and 'nav header'
elem.className = _.chain(elem.className).split(/[\s]+/).union(['nav','navHeader']).join(' ').value()

// remove the added classes
elem.className = _.chain(elem.className).split(/[\s]+/).difference(['nav','navHeader']).join(' ').value()

1

කෙටිම

image1.parentNode.className+=' box';


1
document.getElementById('some_id').className+='  someclassname'

හෝ:

document.getElementById('come_id').classList.add('someclassname')

දෙවන ප්‍රවේශය ක්‍රියාත්මක නොවූ විට පළමු ප්‍රවේශය පන්තිය එක් කිරීමට උපකාරී විය. පළමු ප්රවේශය
ඉදිරිපිට ඉඩක් තබා ගැනීමට අමතක නොකරන්න ' someclassname'.

ඉවත් කිරීම සඳහා ඔබට භාවිතා කළ හැකිය:

document.getElementById('some_id').classList.remove('someclassname')

0

පළමුව, div ට හැඳුනුම්පතක් දෙන්න. ඉන්පසු, appendClass ශ්‍රිතය අමතන්න:

<script language="javascript">
  function appendClass(elementId, classToAppend){
    var oldClass = document.getElementById(elementId).getAttribute("class");
    if (oldClass.indexOf(classToAdd) == -1)
    {
      document.getElementById(elementId).setAttribute("class", classToAppend);
    }
}
</script>

1
එය එකතු නොකරන පන්තිය ප්‍රතිස්ථාපනය කරයි! සමහර විට රේඛාවක් අස්ථානගත වී හෝ අන්තිම පන්තියේ ටෝ ඇපෙන්ඩ් වෙනුවට පැරණි ක්ලාස් + "" + ක්ලෝටෝ ඇපෙන්ඩ්
වින්සේ


0

ඔබේ මූලද්‍රව්‍යය තේරීමට ඔබට API විමසුම් තේරීම භාවිතා කළ හැකි අතර පසුව මූලද්‍රව්‍යය හා නව පන්තියේ නම පරාමිතීන් ලෙස ශ්‍රිතයක් නිර්මාණය කළ හැකිය. නවීන බ්‍රව්සර් සඳහා පන්ති ලැයිස්තුව භාවිතා කිරීම, වෙනත් IE8 සඳහා. එවිට ඔබට සිදුවීමකින් පසුව ශ්‍රිතය ඇමතිය හැකිය.

 //select the dom element
 var addClassVar = document.querySelector('.someclass');

 //define the addclass function
 var addClass = function(el,className){
   if (el.classList){
     el.classList.add(className);
   }
   else {
     el.className += ' ' + className;
  }
};

//call the function
addClass(addClassVar, 'newClass');

බ්‍රව්සර් සහාය සමඟ මෙය දැනටමත් සාකච්ඡා කර ඇත .
ඩෑන් ඩස්කල්ස්කු

-4

මෙම js කේතය මට වැඩ කරයි

පන්ති නාම ප්‍රතිස්ථාපනය සපයයි

var DDCdiv = hEle.getElementBy.....

var cssCNs = DDCdiv.getAttribute('class');
var Ta = cssCNs.split(' '); //split into an array
for (var i=0; i< Ta.length;i++)
{
    if (Ta[i] == 'visible'){
        Ta[i] = 'hidden';
        break;// quit for loop
    }
    else if (Ta[i] == 'hidden'){
        Ta[i] = 'visible';
    break;// quit for loop
    }
}
DDCdiv.setAttribute('class',Ta.join(' ') );  // Join array with space and set class name

එකතු කිරීමට පමණක් භාවිතා කරන්න

var cssCNs = DDCdiv.getAttribute('class');
var Ta = cssCNs.split(' '); //split into an array
Ta.push('New class name');
// Ta.push('Another class name');//etc...
DDCdiv.setAttribute('class',Ta.join(' ') );  // Join array with space and set class name

භාවිතය ඉවත් කිරීමට

var cssCNs = DDCdiv.getAttribute('class');
var Ta = cssCNs.split(' '); //split into an array

for (var i=0; i< Ta.length;i++)
{
    if (Ta[i] == 'visible'){
        Ta.splice( i, 1 );
        break;// quit for loop
    }
}
DDCdiv.setAttribute('class',Ta.join(' ') );  // Join array with space and set class name

මෙය කෙනෙකුට ප්‍රයෝජනවත් වේ යැයි සිතමි


-9

YUI හි, ඔබ yuidom ඇතුළත් කරන්නේ නම් , ඔබට භාවිතා කළ හැකිය

YAHOO.util.Dom.addClass('div1','className');

HTH


12
එය පැවසුවේ JavaScript මිස jQuery හෝ YUI නොවේ.
රාඩෙක්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.