要素を複数のクラスを持つように設定するにはどうすればよいですか?
最初の試み:
element.setAttribute("class","class1","class2");
element.className="class1 , class2";
element.class="class1 , class2";
属性を通常どおりに設定するだけです。これは、属性を、渡した文字列に設定するだけで、値の処理方法に関する特別な規則は認識していません。
この属性はスペースで区切られたクラスのリストを取るため、次のようになります。
element.setAttribute("class","class1 class2");
ただし…Internet Explorerの古いバージョン(7以下と思います)のsetAttribute
実装には重大なバグがあるため、使用しないでください。代わりにclassName
プロパティを使用してください。
element.className = "class1 class2";
また、これらはHTMLクラスであることにも注意してください。彼らはスタイルの適用を超えて使用します。 CSSクラスのようなものはありません(クラスセレクター、他のセレクター、ルールセット、およびプロパティはありますが、それらすべてが(誤って、混乱して)「クラス」と呼ばれることがあります)。
属性className
は、スペースで区切られた値のリストです。
これを試して:
document.getElementById("MyElement").className = "class1 class2";
(2つの名前の間のコンマではなくスペースに注意してください)
または、すでにそこにあるクラスに追加したい場合:
document.getElementById("MyElement").className += " class1 class2";
コンマは使用しないでください。複数のクラスの間にクラス名をスペースで設定するだけです。私はjQuery addClassメソッドを使用します-jQueryを使用している場合:)。
(現在のクラスを破壊するのではなく)追加したい場合は、
element.className = element.className + " anotherclass yetanotherclass"
`element.className = "class1" + " class2" + " class3"`;
あるいは
element.className = ["class1","class2","class3"].join(" ")
これにより、以前のすべてのクラスが書き換えられます。最近のブラウザでは、すべてのDOM要素に、アクセスできるclassList
コレクションもあります。 add
、remove
、toggle
メソッドがあります。これは、JavaScriptフレームワークが標準API自体にどのように影響したかを示す良い例です。
ID
にフックできれば簡単です
document.getElementById("a").className = "newClass anotherClass";
これは正しい答えではないでしょうか:
var yourDiv = document.getElementById("divName");
yourDiv.SetAttribute("class","RedClass");
yourDiv.SetAttribute("className","RedClass");
そのようにclassName
を使用して行われたことはありません(例:yourDiv.className ...)。
新しいクラスが既存のクラスのリストに追加されるように、element.className += "classname"
を使用しても安全です。