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

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

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

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

Q&A

解決済

3回答

1019閲覧

初歩的な事か思いますがjavascriptで困ってます。初心者です。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2016/10/13 03:42

編集2016/10/13 04:15

###前提・実現したいこと
javascript初心者です。
勉強の為に以下のようjsを作っています。

javascriptを使って、
ulタグの中のliタグの中にあるa要素をクリックしたときに、イベントが発生するjsを書きたい。(とりあえずalert)

###発生している問題・エラーメッセージ
そもそもの組み方がわかりません。
ページ内に二つ以上ある同じクラス名のulタグを探して取得し、さらにその中にあるliタグを取得して、a要素の取得をしクリックイベントを実現したい。
alert(btnLi); でliの配列が取得できるかと思ってましたがダメでした。
こうした方がいいなどあればお願いします。

###該当のソースコード

<ul class="btnList"> <li><a href="#">ボタン1</a></li> <li><a href="#">ボタン2</a></li> <li><a href="#">ボタン3</a></li> </ul> <ul class="btnList"> <li><a href="#">ボタン1</a></li> <li><a href="#">ボタン2</a></li> <li><a href="#">ボタン3</a></li> </ul> <script> var btnList = document.getElementsByClassName('btnList'); for (var i = 0; i < btnList.length; i++) { var btnLi = btnList[i].children; for (var j = 0; j < btnLi; j++) { alert(btnLi); } } </script>

###試したこと
初めてforの中にforを入れてみました。
ダメでしょうか?

###補足情報(言語/FW/ツール等のバージョンなど)
特になし

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

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

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

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

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

guest

回答3

0

ベストアンサー

どこが問題か等は分かっていますか?
たとえば、一行ずつ alert を仕込んでいくと、問題箇所を絞り込めます。

※ただし、LOOP の中でアラートを出すと 毎LOOP 出てしまうので気を付けてください。

var btnList = document.getElementsByClassName('btnList'); alert("000"); // ★これが出るならこれ以前のコードはひとまず動いている for (var i = 0; i < btnList.length; i++) { alert("001"); // ★ var btnLi = btnList[i].children; alert("002"); // ★ for (var j = 0; j < btnLi; j++) { alert("003"); // ★ alert(btnLi); } }

これを仕込んでみると、003 の alert が出ないと思います。

ということは、002 と 003 の間に何か間違いがあるということになります。

for 文ですね。var j の宣言は問題なさそうです。LOOPカウンタの判定はどうでしょうか…?

投稿2016/10/13 03:59

sk_3122

総合スコア1126

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

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

退会済みユーザー

退会済みユーザー

2016/10/13 04:20

多分書き方?処理の仕方に間違いがあるからアラート3が出ないのかなと思っています。 複数あるulの中のひとつを取得しつつ(これはできてる)、その取得したulの中でまた特定のliを取得(これができない)したいのですが。。。
sk_3122

2016/10/13 04:24

(もう一度よく… 2 つ目の for 文を見てください… 1つ目の for 文は通っているのです… 1つ目の for 文と 2つ目の for 文を… よく見比べてください… 両者には明らかに違う箇所があります… 「LOOPカウンタの宣言」 「LOOPカウンタの判定」 「LOOPカウンタの増加」 これのうちどこかに… 書き方が違う箇所がありませんか…?)
退会済みユーザー

退会済みユーザー

2016/10/13 04:44

lengthが抜けてました! 無事動きました! 思い通りの処理はまだできてませんが先に進むことができました。 ありがとうございます!
guest

0

<script>がないのと、数字の<で比較できるものは数字なんじゃないかなと言うことをちょっと思った。

投稿2016/10/13 04:13

toutou

総合スコア2050

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

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

0

Javascriptのコードは<script>タグで囲っていますか?

投稿2016/10/13 03:54

natady

総合スコア606

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

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

退会済みユーザー

退会済みユーザー

2016/10/13 04:14

失礼しました。 HTMLはHTMLファイルに、jsは外部ファイルでやってたのでscriptタグは省いていました。 わかりずらかったですね。追記しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問