[解決済み] Uncaught TypeError: 未定義のプロパティ 'add' を読み取ることができません。
2022-02-18 13:37:22
質問
以下のコードを
.js
ファイルを作成します。
var tiles = document.querySelectorAll(".tile");
var tileNumbers = ["one", "two", "three", "four"];
for(var i = 0; i < tiles.length; i++){
var num = Math.floor(Math.random() * tileNumbers.lenth);
tiles.classList.add(tileNumbers[num]);
tileNumbers.pop(num);
}
は
.tile
は4
<div>
で、4つのタイルにそれぞれ個別にクラスを追加しようとしています。クラスは
tileNumbers
. Chromeでコードを実行すると、エラーが発生します。
"Uncaught TypeError: 未定義のプロパティ 'add' を読み取ることができません。
スペルは間違いなく全部正しいです。助けてください。
解決方法は?
を呼び出したい。
add
にアクセスしようとすると、タイル上の
add
の関数を使用します。
tiles
配列そのものです。これは存在しません。
必要なのは
add
関数は、個々のタイルの そのために、まずそれを取得します。
var tile = tiles[i];
そして、呼び出しを次のように変更します。
tile.classList.add(…);
(一時的な変数
tile
を使用し
tiles[i].classList.add
を直接使用します。しかし、IMHOは専用の変数を使うことで、コードをより明確に読むことができると考えています)。
もう一つの選択肢は、より良い方法かもしれません。
forEach
. を使うので
i
は現在の要素にアクセスするためだけのものであり、それ以外のものではありません。基本的に、各要素に対してアクションを実行したいのです。このようにすることもできます(ボーナスポイントとして、これはoff-by-oneエラーからも保護されます)。
tiles.forEach(function (tile) {
// ...
});
そして、関数本体の中で、自動的に変数
tile
にアクセスすることができます。
以上です :-)
関連
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】このオブジェクトの "forEach "はなぜ関数でないのですか?
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする
-
[解決済み] React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】未定義のオブジェクトプロパティを検出する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】「Uncaught TypeError: Chromeで "Illegal invocation "が発生する。
-
[解決済み】Javascript - ERR_CONTENT_LENGTH_MISMATCH
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]