回答編集履歴

2

調整

2018/09/14 05:33

投稿

yambejp
yambejp

スコア114863

test CHANGED
@@ -101,3 +101,99 @@
101
101
  </form>
102
102
 
103
103
  ```
104
+
105
+
106
+
107
+ # nameで参照
108
+
109
+ ※s1からs2の流れを見やすくするためにカッコで番号をつけてあります
110
+
111
+ ```javascript
112
+
113
+ <script>
114
+
115
+ window.addEventListener('DOMContentLoaded', function(e){
116
+
117
+ set_s2();
118
+
119
+ document.querySelector('[name="s1"]').addEventListener('change',function(e){
120
+
121
+ set_s2();
122
+
123
+ });
124
+
125
+ document.querySelector('[name="s2"]').addEventListener('change',function(e){
126
+
127
+ set_s3();
128
+
129
+ });
130
+
131
+ });
132
+
133
+ function set_s2(){
134
+
135
+ var v=document.querySelector('[name="s1"]').value;
136
+
137
+ document.querySelector('[name="s2"]').selectedIndex=0;
138
+
139
+ [].forEach.call(document.querySelectorAll('[name="s2"] option:not([value="0"])'),function(x){
140
+
141
+ x.style.display=(x.dataset["val"] && x.dataset["val"]===v)?"":"none";
142
+
143
+ });
144
+
145
+ set_s3();
146
+
147
+ }
148
+
149
+ function set_s3(){
150
+
151
+ document.querySelector('[name="sum"]').value=document.querySelector('[name="s2"]').value;
152
+
153
+ }
154
+
155
+ </script>
156
+
157
+ <form>
158
+
159
+ <select name="s1">
160
+
161
+ <option value="">都道府県選択</option>
162
+
163
+ <option value="hokkaido">北海道(1)</option>
164
+
165
+ <option value="aomori">青森県(2)</option>
166
+
167
+ <option value="akita">秋田県(3)</option>
168
+
169
+ </select>
170
+
171
+ <select name="s2">
172
+
173
+ <option value="0">個数選択</option>
174
+
175
+ <option value="1500" data-val="hokkaido">5-9袋まで(1)</option>
176
+
177
+ <option value="1350" data-val="hokkaido">10袋以上(1)</option>
178
+
179
+ <option value="1300" data-val="hokkaido">20袋以上(1)</option>
180
+
181
+ <option value="1200" data-val="aomori">5-9袋まで(2)</option>
182
+
183
+ <option value="1050" data-val="aomori">10袋以上(2)</option>
184
+
185
+ <option value="1000" data-val="aomori">20袋以上(2)</option>
186
+
187
+ <option value="1100" data-val="akita">5-9袋まで(3)</option>
188
+
189
+ <option value="950" data-val="akita">10袋以上(3)</option>
190
+
191
+ <option value="900" data-val="akita">20袋以上(3)</option>
192
+
193
+ </select>
194
+
195
+ <input name="sum" type="text" value="0" style="text-align:right">
196
+
197
+ </form>
198
+
199
+ ```

1

追記

2018/09/14 05:33

投稿

yambejp
yambejp

スコア114863

test CHANGED
@@ -1 +1,103 @@
1
1
  全通りオブジェクトに設定しておけばよいでしょう
2
+
3
+
4
+
5
+ # 追記
6
+
7
+
8
+
9
+ もしご提示のデータ形式で管理したいならこうでしょうか
10
+
11
+ ```javascript
12
+
13
+ <script>
14
+
15
+ window.addEventListener('DOMContentLoaded', function(e){
16
+
17
+ set_s2();
18
+
19
+ document.querySelector('#s1').addEventListener('change',function(e){
20
+
21
+ set_s2();
22
+
23
+ });
24
+
25
+ document.querySelector('#s2').addEventListener('change',function(e){
26
+
27
+ set_s3();
28
+
29
+ });
30
+
31
+ });
32
+
33
+ function set_s2(){
34
+
35
+ var v=document.querySelector('#s1').value;
36
+
37
+ document.querySelector('#s2').selectedIndex=0;
38
+
39
+ [].forEach.call(document.querySelectorAll('#s2 option:not([value="0"])'),function(x){
40
+
41
+ x.style.display=(x.dataset["val"] && x.dataset["val"]===v)?"":"none";
42
+
43
+ });
44
+
45
+ set_s3();
46
+
47
+ }
48
+
49
+ function set_s3(){
50
+
51
+ document.querySelector('#s3').value=document.querySelector('#s2').value;
52
+
53
+ }
54
+
55
+ </script>
56
+
57
+ ```
58
+
59
+ ```HTML
60
+
61
+ <form>
62
+
63
+ <select name="s1" id="s1">
64
+
65
+ <option value="">都道府県選択</option>
66
+
67
+ <option value="hokkaido">北海道</option>
68
+
69
+ <option value="aomori">青森県</option>
70
+
71
+ <option value="akita">秋田県</option>
72
+
73
+ </select>
74
+
75
+ <select name="s2" id="s2">
76
+
77
+ <option value="0">個数選択</option>
78
+
79
+ <option value="1500" data-val="hokkaido">5-9袋まで</option>
80
+
81
+ <option value="1350" data-val="hokkaido">10袋以上</option>
82
+
83
+ <option value="1300" data-val="hokkaido">20袋以上</option>
84
+
85
+ <option value="1200" data-val="aomori">5-9袋まで</option>
86
+
87
+ <option value="1050" data-val="aomori">10袋以上</option>
88
+
89
+ <option value="1000" data-val="aomori">20袋以上</option>
90
+
91
+ <option value="1100" data-val="akita">5-9袋まで</option>
92
+
93
+ <option value="950" data-val="akita">10袋以上</option>
94
+
95
+ <option value="900" data-val="akita">20袋以上</option>
96
+
97
+ </select>
98
+
99
+ <input name="sum" type="text" value="0" style="text-align:right" id="s3">
100
+
101
+ </form>
102
+
103
+ ```