[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
2022-01-18 08:14:10
質問内容
コードは次のとおりです。
var comment = document.getElementsByClassName("button");
function showComment() {
var place = document.getElementById('textfield');
var commentBox = document.createElement('textarea');
place.appendChild(commentBox);
}
comment.addEventListener('click', showComment, false);
<input type="button" class="button" value="1">
<input type="button" class="button" value="2">
<div id="textfield">
</div>
実行すると、エラーが発生します。
.addEventListener is not a function
解決方法は?
あなたのコードの問題は、html要素が利用可能になる前にあなたのスクリプトが実行されることです。そのため
var comment
は空の配列です。
ですから、html要素が利用できるようになってから、スクリプトを移動させるべきです。
また
getElementsByClassName
は html コレクションを返すので、ある要素にイベントリスナーを追加する必要がある場合は、次のようにする必要があります。
comment[0].addEventListener('click' , showComment , false ) ;
すべての要素にイベントリスナーを追加したい場合は、要素間をループする必要があります。
for (var i = 0 ; i < comment.length; i++) {
comment[i].addEventListener('click' , showComment , false ) ;
}
関連
-
親子コンポーネント通信を解決する3つのVueスロット
-
JSアレイループと効率解析の比較
-
vue ディレクティブ v-html と v-text
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] parseInt(1/0, 19)はなぜ18を返すのですか?
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
vueのグローバルがscss(mixin)を導入。
-
vue ディレクティブ v-html と v-text
-
vueが定義するプライベートフィルタと基本的な使い方
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み】TypeError: Router.use() はミドルウェアの関数を要求しているが、Object を取得した。
-
[解決済み】Node.js Error: Cannot find module express
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules