[解決済み] getElementsByClassNameから配列にforEachを使用すると、"TypeError: undefined is not a function "が発生する。
2023-01-08 06:26:52
質問
で
私のJSFiddle
では、私は単に要素の配列に対して反復処理を行おうとしています。ログステートメントが証明するように、配列は空でありません。しかし
forEach
を呼び出すと、(あまり役に立たない) "Uncaught
TypeError
:
undefined
は関数ではありません "というエラーが発生します。
私は何か馬鹿なことをしているに違いありません。何が間違っているのでしょうか?
私のコードです。
var arr = document.getElementsByClassName('myClass');
console.log(arr);
console.log(arr[0]);
arr.forEach(function(v, i, a) {
console.log(v);
});
.myClass {
background-color: #FF0000;
}
<div class="myClass">Hello</div>
どのように解決するのですか?
それは
document.getElementsByClassName
は
HTMLCollection
を返します。配列ではありません。
幸いなことに、それは
"配列のような"オブジェクトです。
であり (これはあたかもオブジェクトであるかのように記録される理由と、標準的な
for
ループで反復処理できる理由です)、そのため、このようにすることができます。
[].forEach.call(document.getElementsByClassName('myClass'), function(v,i,a) {
ES6 では (モダンブラウザや Babel では)
Array.from
で、配列のようなオブジェクトから配列を構築します。
Array.from(document.getElementsByClassName('myClass')).forEach(v=>{
とか、配列のようなオブジェクトを配列に展開する。
[...document.getElementsByClassName('myClass'))].forEach(v=>{
関連
-
[解決済み] JS: Array.forEachを使用してgetElementsByClassNameの結果を反復処理する。
-
[解決済み] JavaScript を使用して配列からオブジェクトを削除する
-
[解決済み】PHPでforeachループを使用しながら配列の最後の要素を検索する
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] イテレータでmap()を使用する
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】オブジェクトを含む配列をループして、そのプロパティにアクセスする方法
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ
-
[解決済み] document.querySelectorAllはなぜ本当のArrayではなくStaticNodeListを返すのですか?
-
[解決済み] なぜnodelistにはforEachがないのですか?