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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

1466閲覧

.eachファンクションがいまいちピント来ない

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2017/01/04 02:24

.eachファンクションは各繰り返し処理で実行したい関数を指定します。

http://js.studio-kingdom.com/jquery/traversing/each

ということですが、クリックを繰り返すと色が変わったり戻ったりという、
繰り返し処理をしたい時に使うメソッドなのでしょうか?
JSです。

ただ繰り返し複数の要素に何かを当てるなら、セレクタを複数の要素にしたら同じように思えるのですが、どう違うのでしょうか?

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

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

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

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

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

guest

回答1

0

セレクタにより複数のタグ(?)を掴んだ場合、任意の値を参照してもいずれか1つしか
参照できないでしょう。
eachは全データを走査してすべての値を参照することができます。

#sample

javascript

1<script> 2$(function(){ 3 console.log($('input').val()); //ヒットするのは最初のvalue 4 5 $('input').each(function(){ //セレクターで指定した全データを参照 6 console.log($(this).val()); 7 }); 8}); 9</script> 10<input type="text" value="x"> 11<input type="text" value="y"> 12<input type="text" value="z"> 13

投稿2017/01/04 02:29

編集2017/01/04 02:34
yambejp

総合スコア114968

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

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

退会済みユーザー

退会済みユーザー

2017/01/04 02:36

難しくて初心者にはわからないのですが、もう少し初心者にもわかるようにお願いできますか?
yambejp

2017/01/04 02:40

タイミング悪くsample追記してあるのですが、sampleみてもわかりませんか?
退会済みユーザー

退会済みユーザー

2017/01/04 02:46

>>> $(function(){ console.log($('input').val()); //ヒットするのは最初のvalueのみということですが、 inputとしているのになぜすべてのinputにならないのでしょうか? これをeachにするとすべて当たるのですね。
yambejp

2017/01/04 02:58

.val()などは象徴的ですが、prop()にしてもattr()にしても結局 参照時にもどってくるのは1つの値だけで セレクタが複数のオブジェクトを掴んだ場合は、所定の1つのデータだけで そういう仕様ですからしかたありません 上記だけをみてもeachの有効性は理解できると思います。
退会済みユーザー

退会済みユーザー

2017/01/04 03:06

返り値がある場合複数のinputに当たるように記載しても一番上の要素しか値を返してくれない仕様ということでしょうか? .cssでcolorを変えたりする場合はすべてにあたるので、すべてに同じように当たると思ったのですが、attrなどの一部メソッドは.cssとちがいすべてに当たらないので、 eachを使って、何度もval()をinput要素の数分繰り返して、すべての値を取得するしか方法がないのでそのような場合に使うということですかね? もしそうなら、関数ごとにこの関数はeachを使わないといけないのか調べる必要がありそうですね。 cssとはやはり根本式に仕様が違うのですね。 cssはドノプロパティもすべての要素に当たりますが。
yambejp

2017/01/04 03:08

「参照」に関しては戻り値は1つです。 値の代入や変更については全てのセレクタに適用されます
退会済みユーザー

退会済みユーザー

2017/01/04 03:15

返り値がある場合複数のinputに当たるように記載しても一番上の要素しか値を返してくれない仕様ということでしょうか? また、値がどうなっているかなどを取得して確認する参照の場合は一番上だけなので、 すべて見たい場合にeachを使うということですね。 その他の値の代入や変更については全てのセレクタに適用されるので、eachを使うことはないということですね。 つまりこの関数はeachを使うのではなく度の関数でも値の代入や変更をするならeachを使うと行う行動で使う使わないが決まるということでしょうか?
yambejp

2017/01/04 03:23

ちょっとニュアンスがわからないですが セレクタが複数のオブジェクトをつかむ可能性がある以上 eachを使用しないとユーザーが必要な全てのデータを参照することができないということです
Lhankor_Mhy

2017/01/04 04:00

> 一番上の要素しか値を返してくれない仕様ということでしょうか?   横からすみません。 ドキュメントに明確に書いてありますので、そちらを参照した方がいいですね。   > Get the current value of * the first element * in the set of matched elements or set the value of * every matched element *. http://api.jquery.com/val/
退会済みユーザー

退会済みユーザー

2017/01/04 05:07

val() 全ての要素のvalue属性を返す。 jQuery1.2では、最初の要素だけではなく全てのvalue属性を返すようになった。複数選択可能なselectボックスなどでは、値は配列として返す。旧バージョンではFormプラグインのfieldValue関数として実装されていた動作。 日本語だとこちらですか? 関数によって違うのでしょうか? それともやくわりによって違うのでしょうか? eachを使うのか、セレクタで複数の要素をしてもいいのか区別方法がわかりません。
退会済みユーザー

退会済みユーザー

2017/01/04 05:08

$(function eachtest2 () { $('textarea').each(function() { console.log($(this).val()); }); }); $(function eachtest1 () { const eachtest = $('textarea').val(); console.log(eachtest); }); 違う結果が出たので確かに後者だと一番上のtextareaしか実行されていないのはわかりました。
Lhankor_Mhy

2017/01/04 06:21

うーん? バージョンによって異なるというのは初耳ですね。 一応、CDNで1.2を試してみましたが、やっぱり最初の要素だけでしたね。1.2のリリースノートにもそのようなことは書いていないような? http://semooh.jp は更新止まって久しいので、今は参照しない方がいいですよ。
退会済みユーザー

退会済みユーザー

2017/01/04 06:28

確かにこのサイトにあった情報ですが日本語のリファレンスはここしかないですよね。 すでにオワコンjqueryなので止まってしまっているのでしょうか? とりあえずjqueryのバージョンは関係ないことはわかったのですが、 するとどう区別するのでしょうか? メソッドことですか? やりたいこと次第ですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問