[解決済み] JavaScriptで要素にクラスが含まれているかどうかを確認する?
2022-03-23 13:03:51
質問
プレーンなJavaScript(jQueryではない)を使って、ある要素が を含む のようなクラスはありますか?
現状では、こうしています。
var test = document.getElementById("test");
var testClass = test.className;
switch (testClass) {
case "class1":
test.innerHTML = "I have class1";
break;
case "class2":
test.innerHTML = "I have class2";
break;
case "class3":
test.innerHTML = "I have class3";
break;
case "class4":
test.innerHTML = "I have class4";
break;
default:
test.innerHTML = "";
}
<div id="test" class="class1"></div>
問題は、HTMLをこのように変更すると...。
<div id="test" class="class1 class5"></div>
...完全一致がなくなったので、デフォルトの出力である何も表示されない (
""
). しかし、私はまだ、出力が
I have class1
というのも
<div>
今も
が含まれています。
その
.class1
クラスがあります。
どのように解決するのですか?
使用方法
element.classList
.contains
メソッドを使用します。
element.classList.contains(class);
これは現在のすべてのブラウザで動作し、古いブラウザをサポートするポリフィルも存在します。
または
古いブラウザで作業していて、ポリフィルで修正するのが面倒な場合は
indexOf
が正しいのですが、少し手を加える必要があります。
function hasClass(element, className) {
return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;
}
そうでない場合は、次のようになります。
true
探しているクラスが他のクラス名の一部である場合。
jQueryも同じような方法(同じではないにしろ)を使っています。
例題に適用した。
switch文との併用はできないので、次のコードで同じ効果を得ることができます。
var test = document.getElementById("test"),
classes = ['class1', 'class2', 'class3', 'class4'];
test.innerHTML = "";
for(var i = 0, j = classes.length; i < j; i++) {
if(hasClass(test, classes[i])) {
test.innerHTML = "I have " + classes[i];
break;
}
}
また、冗長性も少なくなります ;)
関連
-
vueのグローバルがscss(mixin)を導入。
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JSクロスドメインソリューション リアクト構成 リバースプロキシ
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。
-
[解決済み] CSSのクラス名/セレクタに使用できる文字は?
-
[解決済み] onClickで、クリックされたボタンのIDを取得する。
-
[解決済み】特定のクラスを持つ最も近い祖先要素を検索する