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

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

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

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

HTML

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

Q&A

解決済

2回答

1004閲覧

htmlで動的配置したselectについてonchangeイベントを構築したい

hl4143

総合スコア1

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2023/02/17 08:23

実現したいこと

・HTML内に動的配置したcheckboxとselectを10行作成しました(checkbox と select の name はそれぞれ同一です)。
・その中のselectを変更した際にcheckboxをcheckedにする方法について知りたいです。

前提

nameが同一であれば、getElementsByName()メソッドで配列として取得できることは理解しています。

該当のソースコード

HTML

1〜省略〜 2 <? for (var p =0; p < 10; p++){ ?> 3 <tr> 4 <td><input type="checkbox" name="chk" class="chk"/td> 5 <td><select name="item" class="item2" onchange="checkboxOn()"> 6 <option>商品を選択して下さい</option> 7 <? for (n = 0; n < itemArray.length; n++){ ?> 8 <option><?= itemArray[n][1] ?></option> 9 <? } ?> 10 </select></td> 11 <td bgcolor="#ffffdb"><input name="num" class="num" type="number"value="0" style="text-align:right"> 12 </tr> 13 <? } ?>

javascript

1<script> 2function checkboxOn(){ 3 4} 5</script>

試したこと

javascript内でfor文を使って、要素を1つずつ取得する方法があることはわかりましたが、「どのselectが変更されたか」といういわゆる「添字」(表現が違っていたらすみません)を取得したいと思っています。

質問内容が端的に表現できているか非常に不安ではありますが、お力をお貸しいただければ幸甚です。よろしくお願いいたいます。

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

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

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

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

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

yambejp

2023/02/17 08:43 編集

繰り返し部分サーバーサイドプログラムを利用していますか? セレクトボックスとチェックボックスの関係がよくわからないです。 HTMLでサンプルを書けないですか?
guest

回答2

0

ベストアンサー

最大限好意的に解釈してこんな感じ

javascript

1<script> 2document.addEventListener('change',e=>{ 3 const t=e.target; 4 if(t.matches('[name=item]')){ 5 t.closest('tr').querySelector('[type=checkbox]').checked=t.selectedIndex>0; 6 } 7}); 8</script> 9<table> 10<tbody> 11<tr> 12<td><input type="checkbox"></td> 13<td> 14<select name="item"> 15<option>商品を選択して下さい</option> 16<option value="1">1</option> 17<option value="2">2</option> 18<option value="3">3</option> 19</select> 20</td> 21</tr> 22<tr> 23<td><input type="checkbox"></td> 24<td> 25<select name="item"> 26<option>商品を選択して下さい</option> 27<option value="1">1</option> 28<option value="2">2</option> 29<option value="3">3</option> 30</select> 31</td> 32</tr> 33<tr> 34<td><input type="checkbox"></td> 35<td> 36<select name="item"> 37<option>商品を選択して下さい</option> 38<option value="1">1</option> 39<option value="2">2</option> 40<option value="3">3</option> 41</select> 42</td> 43</tr> 44</tbody> 45</table>

投稿2023/02/17 08:51

yambejp

総合スコア114843

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

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

hl4143

2023/02/18 06:30

HTMLとGASを組み合わせて作成していますが、ご教授いただいたコードで目的とすることが実現できました。うろ覚えのHTMLとJava Scriptで色々と試しながら作業しておりますが、この際、きちんと基礎からJava Scriptを勉強しようと思います。ありがとうございましたm(__)m。
guest

0

checkboxOn() の中では this が変更された <select> になります。それを起点として、対応するチェックボックスを求めればよいでしょう。
たとえば、this.closest('tr').querySelector('input.chk') など。

投稿2023/02/17 08:49

int32_t

総合スコア20884

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問