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

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

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

DOMは、Document Object Modelの略で、HTML文書やXML文書をアプリケーションから利用するためのAPIです。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

1839閲覧

[DOM] [JavaScript ] クラスからDOM要素の取得ができず困っております。

mirk

総合スコア2

DOM

DOMは、Document Object Modelの略で、HTML文書やXML文書をアプリケーションから利用するためのAPIです。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2021/11/15 11:16

編集2021/11/15 12:10

問い
"animal"というクラスを持つ全てのDOM要素のリストを返す関数getAnimals()を実装する。
という問題なのですが、
以下の様に記述したところ、

HTML

1<!DOCTYPE html> 2<html> 3 <body> 4 <div id="favorites"> 5 <p class="fruit">Apple</p> 6 <p class="fruit">Orange</p> 7 <p class="fruit">Banana</p> 8 <p class="animal">Dog</p> 9 <p class="animal">Cat</p> 10 <p class="fruit">Kiwi</p> 11 <p class="animal">Horse</p> 12 </div> 13 14 <script> 15 function getFruits() { 16    var elements = document.getElementsByClassName("fruit"); 17 return fruit; 18 } 19 </script> 20 </body> 21</html>

node test.js

正しく実行できること
ReferenceError: fruit is not defined
at getFruits (file:///root/src/index.html:4:9)
at test (/root/src/test.js:10:25)
at /root/src/jsdom-test-utils:117:9
19% Completed

.エラーである様に,「fruit」が定義できていないことや、getElementsByClassNameが機能させることができていないことはわかるのですが、
正しく実行することができません。

正しいコードと解説をいただけないでしょうか。

よろしくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/11/15 11:23

Node.js前提なら質問タグに追加してください。 あと、htmlとそのメソッド呼び出す記述も提示してください。
m.ts10806

2021/11/15 13:28

>正しく実行することができません。 エラーを解消した場合はどうなのでしょう。 ひとまずメソッド内を下記だけにするとか return document.getElementsByClassName("fruit");
m.ts10806

2021/11/15 13:28

※それにvarの前が全角スペースなのでそもそもfruit is not definedよりも前にエラーになるはずでは
guest

回答2

0

"animal"というクラスを持つ全てのDOM要素のリストを返す関数getAnimals()

  • 定義した関数名がgetFruits()
  • getElementsByClassName("fruit")→fruitというクラスを拾っている
  • return fruit→elementsで受けてるのに未定義のfruitを返そうとしている
  • そもそもgetFruits()を呼び出していない

sample

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelectorAll('[data-choice]').forEach(x=>{ 4 x.addEventListener('click',()=>{ 5 const list=document.querySelectorAll(`.${x.dataset['choice']}`); 6 console.log(list); 7 }); 8 }); 9}); 10</script> 11<div id="favorites"> 12<p class="fruit">Apple</p> 13<p class="fruit">Orange</p> 14<p class="fruit">Banana</p> 15<p class="animal">Dog</p> 16<p class="animal">Cat</p> 17<p class="fruit">Kiwi</p> 18<p class="animal">Horse</p> 19<p class="animal fruit">test</p> 20</div> 21<input type="button" value="get animal" data-choice="animal"> 22<input type="button" value="get fruit" data-choice="fruit">

投稿2021/11/16 00:21

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

getElementsByClassNameが機能させることができていないことはわかるのですが

いえ、そこは問題ないかと思います。結果はなんという変数に入れていますか?

投稿2021/11/15 11:34

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mirk

2021/11/15 12:13

ご返信ありがとうございます。 書式の不足があったので、再度加筆したのですが、お答えになっているでしょうか? 不慣れなため不十分でしたら申し訳ありません。
maisumakun

2021/11/15 12:53

> 再度加筆したのですが、お答えになっているでしょうか? 答えてほしいのではなく、自身の書いたコードを読み返してほしかったのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問