2011-09-12 3 views
38

<html>の要素に、クラス名 "foo"を追加するにはどうすればいいですか? jQuery(または同様のライブラリ)を使用していますか?jQueryを使用しないで<html>要素にクラスを追加するにはどうすればよいですか?

+6

非常に多くの重複... – Zirak

+0

@CoryMawhorter [クラスの操作](http://stackoverflow.com/questions/195951/change-an-elements-css-class-with-javascript/196038 #196038)、[html要素を取得](http://stackoverflow.com/questions/9362907/how-can-i-reference-the-html-elements-corresponding-dom-object/9362944#9362944) – Zirak

答えて

59

要素を取得してクラスのリストに追加するだけです。クラスの要素のリストにアクセスするための

document.documentElement.className += " foo"; 
+4

ありがとう!基本的なJavaScriptについて何も知らなくてもjQueryで何かできることは夢中です...これまで何百万回も尋ねられていたのであれば、jQueryベースのソリューションしか見つけることができませんでした。 – user940633

+0

同じように ' - = '演算子を使ってクラスを削除すると、クラス名に' NaN'が無かったのです(JSは '+'と '-'演算子を使って数値に自動的に変換されます?)。もちろん、クラスが1つしかない場合は、単純に '=" ";'を実行して削除することができますが、[OlivérKovácsの回答](https://stackoverflow.com/a/22224493/1765386)が最適です私の場合。 – Anderson

+1

@Anderson JSでは、 '+ ='を使うと 'document.documentElement.className'と' 'foo" 'という2つの文字列を連結しますが、JavaScriptの文字列には' -'演算子はありません。その結果、インタプリタは暗黙のうちに 'document.documentElement.className'と' 'foo" 'という文字列を' NaN'という数字に変換します。 'NaN - NaN'の結果は' NaN'です。 Chromeコンソールで '' hello " - " foo "'を実行すると、同じ結果が表示されます。 –

46

You can useclassList

document.documentElement.classList.add('my-awesome-class'); 

document.documentElement.classList.remove('my-awesome-class'); 

document.documentElement.classList.contains('my-awesome-class'); 
+2

注意して使用すると、classListはエクスプローラブラウザを部分的にサポートします: http://caniuse.com/#search=classList –

5
AddClass(document.documentElement, 'my-awesome-class', true); //add 
AddClass(document.documentElement, 'my-awesome-class', false); //remove 

function AddClass(o,c,bAdd){ 
    var list = o.className.split(" "); 
    if (list.indexOf(c)!==-1){ 
     if (!bAdd) delete list[list.indexOf(c)]; 
    }else{ 
     if (bAdd) list[list.length] = c; 
    } 
    o.className = list.join(" "); 
} 
関連する問題