ウェブフロント
- angular
- corewebvitals
- editorconfig
- gatsby
- hls
- html
- javascript
querySelectorAllで取得した要素は配列ではないらしい
JavaScript 配列内のオブジェクトの更新ってどうする?
デバッグ関数とかnullチェック関数をutil/index.tsにおいとけば楽なことに今頃気づいた。
ブラウザからジャイロセンサーを使ってみる
JS 画像のアップロード、プレビュー機能を実装
「数値から各桁の値を取り出す処理」って言われたら数学的な処理が一番に思い浮かぶけど、JSならそんなことなかった。
Callback時代の関数をPromise化する
個人的実装されてほしいECMA Script Proposal
JavaScriptのprototypeを使う
音声をなみなみさせる
AudioWorkletとAudioWorkletProcessorを使って音声のビジュアライゼーション
- next
- nuxt
- playwright
- prettier
- react
- reactnative
- tensorflowjs
- tools
- typescript
- wasm
- websocket
- ポエム
- 開発環境
サーバー
その他
querySelectorAllで取得した要素は配列ではないらしい
流れ
同じクラス名のやつとってきてループ処理したい!
const dom = document.querySelectorAll("クラス名");
dom.map((x) => {
// 処理
});
そしたら返ってくるのは
Uncaught TypeError: dom.map is not a function
という..原因
実行しようとしているのは
エラーとして
試しにデバッガで
ドキュメントには map は見当たらないのでエラーがでていることがわかった.
Array.prototype.map()
という関数.エラーとして
dom.map is not a function
と返ってくるということは dom は配列ではないということ..試しにデバッガで
console.log(dom)
とすると NodeList
というオブジェクトであることがわかった.ドキュメントには map は見当たらないのでエラーがでていることがわかった.
解決方法
forEach()
もしくは Array.from()
を使うことで解決できる.forEach()
を使う場合はdom.forEach((x) => {
// 処理
});
Array.from()
を使う場合はArray.from(document.querySelectorAll("クラス名"), (x) => {
// 処理
});
と書くことができる.
そして第二引数に
Array.from()
の第一引数は arrayLike
なものを渡せる.そして第二引数に
mapFn
を渡せるので最初にやりたかった Array.map()
の処理を実現することができる.個人的には
Array.from()
の方が好き♡Array.prototype.map() [MDN]
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map
NodeList [MDN]
https://developer.mozilla.org/ja/docs/Web/API/NodeList
Array.from() [MDN]
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/from
Thanks you for reading.