jQueryで複数の要素オブジェクト(というの?)を取得するケースで、jQueryオブジェクトとして扱えなくなっていることが気持ち悪く、ここをどうにかできないかという話です。
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.1 …
<input type="text" id="ii1" name="nn" value="マツコ">
<input type="text" id="ii2" name="nn" value="竹田">
<input type="text" id="ii3" name="nn" value="小梅太夫">
<script>
jQuery(function ($) {
alert($("#ii1").val()); // (0)
alert($("[name=nn]:eq(1)").val()); // (1)
alert($("[name=nn]:first-child").val()); // (2)
alert($("[name=nn]")[2].value); // (3)
alert($("[name=nn]").get(1).value); // (4)
});
</script>
このソースで、(0)はいいとして、(1)(2)のようにオブジェクトが一つしか返らないような場合には、「.val()」メソッドが使えます。しかし(3)(4)の場合には、少なくともこのままでは「.val()」メソッドが使えないため、Elementオブジェクトのvalueプロパティを使用しています。
値を取得するコードで「.val()」「value」が混在しているのが気持ち悪く、「value」に統一したいです。ちなみに実際には「$("[name=nn]")」のように取得したあと、for文でまわして処理するケースが多いです。
「$("[name=nn]")」で取得し、オブジェクトの件数をカウントしたあと苦肉の策で、for文の中で「$("[name=nn]:eq(" + i + ")").val()」等と書いたこともありますが、むしろ読みにくくなってしまっています。これだったらまだvalueプロパティを使う方がいいかと思います。
「$("[name=nn]")」で複数のオブジェクトを取得した後で、それぞれのオブジェクトに「.val()」を使う方法はありますでしょうか?あるのなら具体的に教えてください。
よろしくお願いします。
No.1
- 回答日時:
eachとか使わないの?
いちいちオブジェクトの件数調べたりする必要ないけど。
$('.hoge').each(function(index) {
alert(index+' = ' + $(this).val());
});
みたいな。
この回答への補足
質問文中に間違いがありました。
このスペースをお借りして訂正させていただきます。
# 値を取得するコードで「.val()」「value」が混在しているのが気持ち悪く、
# 「value」に統一したいです。
は間違いです。
# 「.val()」に統一したいです。
が正しいです。
なるほど。eachを使えばいいんですね。単純なループはこれでいけました。ソースも書き換えました。しかし、1行飛ばして開始するケースや複数のオブジェクトを同時に処理する場合(表形式で1行にテキストボックスが2つ、selectリストが1つとか)などやや複雑な場合には、あまり適さないように感じました。なので、そちらは今のところもとのコードのままにしています…。
jQueryは9/9にはじめたばかりでまだ一ヵ月半くらいしかやっていないことと、一人でやっているので「jQueryの普通」がまだ分からなかったりします。
ですので助かりました。ありがとうございました
No.2
- 回答日時:
いっぺんに処理するところ以外は
$("[name=nn]")で取るんじゃなくって
単体で取るのが一番じゃない?
この回答への補足
「いっぺんに処理するところ以外」というのがどういう状況なのかよく分かりませんが、配列の長さが変わる可能性があり、その最初の要素だけ飛ばして繰り返し同じ内容の処理をしたいというときには単体で取るというのは適さないと思います。配列の長さが変わるたびにコードを書き換えなければならなくなってしまうので、
補足日時:2014/10/24 12:14お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
submitボタン押下時にPOSTされ...
-
【jQuery】input nameの文字列...
-
テキストボックスの値同士を比...
-
新しくフォルダを作成したい
-
ボタンを押すとテキストボック...
-
Javascriptでのbuttonのname属...
-
テキストエリアをenterキーでフ...
-
テキストボックスの入力をリセット
-
javascriptの値をformのinput h...
-
エクセル マクロ submitについて
-
cookie使用時にundefinedと表示...
-
二つの入力欄に、同時に同じ文...
-
JavaScriptにて動的に配列を作...
-
複数のテキストフィールドを同...
-
フォームの一部をPOSTで送信で...
-
オーダーフォーム最終確認画面
-
name属性のないformタグの、中...
-
出発駅A、到着駅Bを選択すると...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【jQuery】input nameの文字列...
-
javascriptの値をformのinput h...
-
JavaScriptにて動的に配列を作...
-
新しくフォルダを作成したい
-
二つの入力欄に、同時に同じ文...
-
Javascriptでのbuttonのname属...
-
name属性のないformタグの、中...
-
テキストボックスの入力をリセット
-
出発駅A、到着駅Bを選択すると...
-
ASP.NETでNAME属性を固定にしたい
-
submitボタン押下時にPOSTされ...
-
ラジオボタンでクリックした値...
-
テキストボックスの値同士を比...
-
jqueryでtextareaのcols、rows...
-
入力フォームに半角スペース以...
-
cookie使用時にundefinedと表示...
-
ファイル選択ダイアログが表示...
-
テキストエリアをenterキーでフ...
-
hiddenを動的に作成したい
-
ボタンを押すとテキストボック...
おすすめ情報