質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

Cannot read properties of undefined (reading 'getElementsByTagName')

EOU818
YUMINAGA

総合スコア45

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1回答

0グッド

0クリップ

249閲覧

投稿2022/11/14 14:02

前提

下記のコードをprintしたら、普通にprintできます。(ERROR無し)

AAA = document.getElementsByClassName("col_ID")[0].getElementsByTagName('input')[0].value console.log(Number(AAA)); BBB = document.getElementsByClassName("col_ID")[1].getElementsByTagName('input')[0].value console.log(Number(BBB)); CCC = document.getElementsByClassName("col_ID")[2].getElementsByTagName('input')[0].value console.log(Number(CCC));

実現したいこと

上記のコードを、下記のコードのように、for loopにしてprintしたいです。

length = document.getElementsByClassName("col_ID").length; for (let i = 0; i <= length; i++) { output_int = document.getElementsByClassName("col_ID")[i].getElementsByTagName('input')[0].value; console.log(Number(output_int)); }

発生している問題・エラーメッセージ

イメージ説明

該当のソースコード

140行目がERRORが出てきました
イメージ説明

試したこと

for loopにする前、普通でprintできるのに、
何故for loopにすると、ERRORが出てきたでしょうか?

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

たとえば、
length = document.getElementsByClassName("col_ID").length
の length が 「3」 のとき、

js

1for (let i = 0; i <= length; i++) {

とすると、i は 0 から 3 までの 4個 の値をとります。
i が 3 のとき、
document.getElementsByClassName("col_ID")[i]
すなわち
document.getElementsByClassName("col_ID")[3]
は undefinedになっていると考えられます。

(語弊を恐れずに言えば、「3個しかないのに4個目を取得しようとしたからエラーになっている」というような感じです)

js

1for (let i = 0; i < length; i++) {

としてみてはいかがでしょうか。

投稿2022/11/14 14:08

編集2022/11/14 14:11
qnoir

総合スコア7910

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

EOU818

2022/11/14 14:16 編集

直ぐ理解しました! 誠にありがとうございます!!!

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。