JavaScriptで不正なappendChildを解決する方法
2022-02-10 06:33:32
こんなコードがあります。
let divs = document.getElementsByClassName('test');
let btn = document.createElement('div');
for(let i=0;i<divs.length;i++){
divs[i].appendChild(btn);
}
このコードは表面上、class属性testを持つ各要素にdivの子要素を追加しています。
問題ないように見えますが、実行してみると、子要素がうまく追加されず、エラーも報告されていないことがわかります。
これは実は、要素が親を1つしか持てないためで、上のコードは複数の要素にbtnを追加しようとしているのです。
というのは、要素が親をひとつしか持てないという事実と矛盾するので、当然ながら追加できないのです。
解決方法は簡単で、btn宣言文をループに入れることで、btnを追加するたびに別の要素になり、上記の問題は発生しません。
コードは次のようになります。
let divs = document.getElementsByClassName('test');
for(let i=0;i<divs.length;i++){
let btn = document.createElement('div');
divs[i].appendChild(btn);
}
関連
-
gitアップロードファイルのエラーを修正する方法 [rejected] master -> master (fetch first) error: failed to push some refs to '.
-
Uncaught SyntaxError: 位置1でJSONの予期しないトークンoは、問題が解決されました。
-
非静的フィールドへの静的参照はできない
-
未定義のプロパティ 'init' を読み取ることができません。
-
VCの*.objで定義済みの問題を解決します。
-
eclipse Java ファイルオープン例外解決 : java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外:26
-
Pygameでタイマーを使う
-
java.net.BindException: バインドに失敗しました。EADDRINUSE (アドレスは既に使用中です) 解決方法
-
TypeError: key: expected bytes or bytearray, but got 'str' 問題は解決した。
-
PythonのTypeErrorです。__init__() に必要な位置引数が2つない
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ImportError: Missing required dependencies ['numpy'] 最初のインポートpandas問題に対する解決策。
-
undefineddouble' の前にある期待される一次式を解決します。
-
リスト解決にリスト("str "ではない)を連結することだけができる
-
AS ERROR: x86 エミュレーションは現在ハードウェアアクセラレーションが必要です!
-
EF: エンティティオブジェクトは、IEntityChangeTrackerの複数のインスタンスから参照することはできません。
-
ImportError: Python スクリプトの実行時に 'Queue' という名前のモジュールがありません。
-
PL/SQL使用時にORA-06550エラーが発生しました。
-
Python3_TypeError: 'list' オブジェクトは呼び出し可能ではありません。
-
URIが登録されていない (設定 | 言語とフレームワーク | スキーマとDTD)
-
numpy.concatenate()関数