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

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

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

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

HTML

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

Q&A

解決済

1回答

35337閲覧

JavaScriptでテーブルの入力値をループして取得する方法

non155

総合スコア14

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2016/12/01 05:49

お世話になります。

HTML、CSS、JavaScriptを使用して簡単な登録管理サイトを作成しています。
処理の中で、以下のようなリストとテキストボックスが混在するテーブルの入力値をループ処理で取得したいのですが
入力値の取得がうまくいきません。

■HTML

<table id="tbl"> <tr> <td> <select id="number1"> <option>001</option> <option>002</option> </select> </td> <td> <input type="text" id="txt1"> </td> </tr> <tr> <td> <select id="number2"> <option>001</option> <option>002</option> </select> </td> <td> <input type="text" id="txt2"> </td> </tr> </table>

■JavaScript

var tblData = document.getElementById("tbl"); for (var i = 0, rowlen = tblData.rows.length; i < rowlen; i++) { for (var j = 0, collen = tblData.rows[i].cells.length; j < collen; j++) { var txtTbldata = tblData.rows[i].cells[j].text(); } }

textプロパティを指定して取得しても、リストの場合は"001002"、テキストボックスの場合は""と
値が返ってきて、入力した値が返ってきませんでした。
プロパティを変更しても、思った値を取得できなかったのでデータの取り方が違うのかなと思いましたが
JavaScriptを始めたばかりで参考文献も手元にないため質問させていただきました。

アドバイスのほどよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

JavaScriptを始めたばかりで参考文献も手元にないため質問させていただきました。

困った時はMDNを見るといいですよ!

HTMLSelectElement.value

Is a DOMString representing the value of the form control (the first selected option).
HTMLSelectElement - Web API インターフェイス | MDN

value string: Returns / Sets the current value of the control.

HTMLInputElement - Web APIs | MDN

 

コメントを受けて追記

HTML

1<table id="tbl"> 2 <tr> 3 <td> 4 <select id="number1"> 5 <option>001</option> 6 <option>002</option> 7 </select> 8 </td> 9 <td> 10 <input type="text" id="txt1"> 11 </td> 12 </tr> 13 <tr> 14 <td> 15 <select id="number2"> 16 <option>001</option> 17 <option>002</option> 18 </select> 19 </td> 20 <td> 21 <input type="text" id="txt2"> 22 </td> 23 </tr> 24 </table> 25 <button> 26 test 27 </button>

javascript

1var tblData = document.getElementById("tbl"); 2document.querySelector('button').addEventListener('click', e => { 3 let txtTbldata = ''; 4 for (var i = 0, rowlen = tblData.rows.length; i < rowlen; i++) { 5 for (var j = 0, collen = tblData.rows[i].cells.length; j < collen; j++) { 6 txtTbldata += tblData.rows[i].cells[j].children[0].value; 7 } 8 } 9 alert(txtTbldata); 10})

https://jsfiddle.net/pg14qncq/

こんな感じでいかが。



さらに行を少なくするなら、ワンライナーで書けますよ。

javascript

1document.querySelector('button').addEventListener( 2 'click', 3 e => alert( 4 Array.prototype.reduce.call( 5 document.getElementById("tbl").rows, 6 ( pv, cv ) => pv + Array.prototype.reduce.call( 7 cv.cells, 8 ( pv, cv ) => pv + cv.children[0].value, 9 '' 10 ), 11 '' 12 ) 13 ) 14);

投稿2016/12/01 06:26

編集2016/12/02 02:24
Lhankor_Mhy

総合スコア36115

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

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

non155

2016/12/02 00:35

ご回答ありがとうございます。 ”document.getElementById(ID名)”で取得できるのは分かるのですが そうするとIDを指定する関係上1行で書ききれないと思うので 上記の取得処理のような1行で済むものはないかと探している次第です。 説明不足ですみません。
Lhankor_Mhy

2016/12/02 00:44

あ、はい。それはわかってますよ。 1行で済むと思うのですが、動作しませんでしたか?
non155

2016/12/02 08:22 編集

教えていただいたコードで処理ができました! ワンライナーで書ける処理の方も、参考にさせていただいてコードの書き方を勉強しようと思います。 ご丁寧にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問