[解決済み] Javascriptで要素が子要素を持つかどうかを確認するには?
質問
簡単な質問ですが、私はある要素を
.getElementById ()
. どのように私はそれが任意の子を持つかどうかを確認するには?
どのように解決するのですか?
いくつかの方法があります。
if (element.firstChild) {
// It has at least one
}
または
hasChildNodes()
という関数があります。
if (element.hasChildNodes()) {
// It has at least one
}
または
length
のプロパティは
childNodes
:
if (element.childNodes.length > 0) { // Or just `if (element.childNodes.length)`
// It has at least one
}
子プロセスについてのみ知りたい場合 要素 (のみを知りたい場合(テキストノードや属性ノードなどではなく)、すべてのモダンブラウザ(および IE8、実際には IE6 でさえ)で、次のようにすることができます。 (ありがとうございます フローリアン !)
if (element.children.length > 0) { // Or just `if (element.children.length)`
// It has at least one element as a child
}
これは
children
プロパティに依存していますが、これは
DOM1
,
DOM2
,
または
DOM3
などがありますが、ほぼユニバーサルにサポートされています。(IE6 以降と Chrome、Firefox、Opera で動作します。
少なくとも
で動作します)。古い携帯端末をサポートする場合は、必ずサポートの有無を確認してください。
IE8 以前のサポートが不要な場合は、このようにすることもできます。
if (element.firstElementChild) {
// It has at least one element as a child
}
これは
firstElementChild
. のように
children
と同様、DOM1-3 では定義されていませんが、DOM1-3 の
children
とは異なり、IE には IE9 まで追加されませんでした。同じことが
childElementCount
:
if (element.childElementCount !== 0) {
// It has at least one element as a child
}
DOM1 で定義されたものにこだわりたい場合 (本当に無名のブラウザをサポートする必要があるかもしれません)、より多くの作業を行う必要があります。
var hasChildElements, child;
hasChildElements = false;
for (child = element.firstChild; child; child = child.nextSibling) {
if (child.nodeType == 1) { // 1 == Element
hasChildElements = true;
break;
}
}
これらはすべて DOM1 の一部であり、ほぼ普遍的にサポートされています。
これを関数でラップするのは簡単でしょう、例えば。
function hasChildElement(elm) {
var child, rv;
if (elm.children) {
// Supports `children`
rv = elm.children.length !== 0;
} else {
// The hard way...
rv = false;
for (child = element.firstChild; !rv && child; child = child.nextSibling) {
if (child.nodeType == 1) { // 1 == Element
rv = true;
}
}
}
return rv;
}
関連
-
vueの補間表現とv-textディレクティブの違いについて
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
fetch ネットワークリクエストラッパーの説明例
-
JSアレイループと効率解析の比較
-
jsを使った簡単な照明スイッチのコード
-
Vue+ElementUIによる大規模なフォームの処理例
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
vueディレクティブv-bindの使用と注意点
-
[解決済み】gulp anythingを実行するたびに、アサーションエラーが発生します。- タスク関数を指定する必要があります
-
[解決済み】(Google Map API) Geocodeは以下の理由で成功しませんでした。REQUEST_DENIED