質問編集履歴

2

resetdataの中のコードのremovechildをremoveChildに訂正しました

2019/06/07 06:52

投稿

tarataia
tarataia

スコア17

test CHANGED
File without changes
test CHANGED
@@ -90,7 +90,7 @@
90
90
 
91
91
  while(0< select.childNodes.length){
92
92
 
93
- select.removechild(select.childNodes[0]);
93
+ select.removeChild(select.childNodes[0]);
94
94
 
95
95
  }
96
96
 
@@ -364,7 +364,7 @@
364
364
 
365
365
  while(0< select.childNodes.length){
366
366
 
367
- select.removechild(select.childNodes[0]);//
367
+ select.removeChild(select.childNodes[0]);//
368
368
 
369
369
  }
370
370
 

1

Markdown記法とコードのインデントを修正しました。それにあたりformreset関数の部分に抜けがあったため修正しました。

2019/06/07 06:52

投稿

tarataia
tarataia

スコア17

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ### 実現したいこと
1
+ # 実現したいこと
2
2
 
3
3
 
4
4
 
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- ### 発生している問題・エラーメッセージ
25
+ ##発生している問題・エラーメッセージ
26
26
 
27
27
 
28
28
 
@@ -34,10 +34,12 @@
34
34
 
35
35
 
36
36
 
37
- ### 該当のソースコード
37
+ ## 該当のソースコード
38
38
 
39
39
  【コード.gs】
40
40
 
41
+ ```
42
+
41
43
  function doGet(e) {
42
44
 
43
45
  var tpl = HtmlService.createTemplateFromFile('index');
@@ -46,6 +48,10 @@
46
48
 
47
49
  }
48
50
 
51
+
52
+
53
+
54
+
49
55
  function loading() {
50
56
 
51
57
  var ss = SpreadsheetApp.openById("xxxxxxxxxxxxxxxxx");
@@ -62,6 +68,8 @@
62
68
 
63
69
  }
64
70
 
71
+
72
+
65
73
  function myloading(){
66
74
 
67
75
  var ss = SpreadsheetApp.openById("xxxxxxxxxxxxxxxxx");
@@ -86,293 +94,307 @@
86
94
 
87
95
  }
88
96
 
97
+  }
98
+
99
+ ```
100
+
101
+ 【javascript.HTML】
102
+
103
+ ```
104
+
105
+ <!DOCTYPE html>
106
+
107
+ <html>
108
+
109
+ <head>
110
+
111
+ <base target="_top">
112
+
113
+ <?!= HtmlService.createHtmlOutputFromFile('css').getContent();?>
114
+
115
+ <title>食べ物の分類</title>
116
+
117
+ </head>
118
+
119
+ <body>
120
+
121
+ <form action="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" method="post">
122
+
123
+ <header>
124
+
125
+ <h1 class="A">食べ物の分類</h1>
126
+
127
+ <h2 class="B"><input type="data"></h2>
128
+
129
+ <div id="information">
130
+
131
+ <select id="list" name="list" class="mainselect" onchange="addElement(this);formreset()" ; required><br>
132
+
133
+ <option value=""></option>
134
+
135
+ </select>
136
+
137
+ </div>
138
+
139
+ <div id="information!">
140
+
141
+ <select id="list2" name="list2" class="subbox" ; required><br>
142
+
143
+ <option value=""></option>
144
+
145
+ </select>
146
+
147
+ </div>
148
+
149
+ <script>
150
+
151
+ function preventFormSubmit() {
152
+
153
+
154
+
155
+ var forms = document.querySelectorAll('index');
156
+
157
+ for (var i = 0; i < forms.length; i++) {
158
+
159
+ forms[i].addEventListener('submit', function(event) {
160
+
161
+ event.preventDefault();
162
+
163
+ });
164
+
165
+ }
166
+
167
+ google.script.run.withSuccessHandler(ListBack).loading();
168
+
169
+ }
170
+
171
+
172
+
173
+ window.addEventListener('load', preventFormSubmit);
174
+
175
+
176
+
177
+ //リスト読み込み
178
+
179
+ function ListBack(data) {
180
+
181
+ listdata = data;
182
+
183
+ var list = document.getElementById('list');
184
+
185
+ for (var i=0; i<data.length; i++){
186
+
187
+ var option = document.createElement('option');
188
+
189
+ option.setAttribute('value', data[i][0]);
190
+
191
+ option.innerHTML = data[i][0];
192
+
193
+ list.appendChild(option);
194
+
195
+ }
196
+
197
+ }
198
+
199
+
200
+
201
+ function addElement(select) {
202
+
203
+
204
+
205
+ for(var i=0; i<listdata.length; i++){
206
+
207
+ if(select.value ==listdata[i][0]){
208
+
209
+ break;
210
+
211
+ }
212
+
213
+ }
214
+
215
+ var element = document.createElement('div');
216
+
217
+ var obj = document.getElementById("information");
218
+
219
+ var division = obj.getElementsByTagName('div');
220
+
221
+
222
+
223
+ if(division.length > 0){
224
+
225
+ obj.removeChild(division[0]);
226
+
227
+ }
228
+
229
+ element.class = "information";
230
+
231
+ obj.appendChild(element);
232
+
233
+ mybotton();
234
+
235
+ formreset();
236
+
237
+  }
238
+
239
+
240
+
241
+ function mybotton(){
242
+
243
+ var score=document.getElementById("list").value;
244
+
245
+ for(var i=0; i<score.length; i++){
246
+
247
+ if(score == "果物"){
248
+
249
+ google.script.run.withSuccessHandler(ListBacks).myloading();
250
+
251
+ break;
252
+
253
+ }//}閉じかっこが必要
254
+
255
+ else if(score == "野菜"){
256
+
257
+ google.script.run.withSuccessHandler(ListBacks).myloading2();
258
+
259
+ break;
260
+
261
+ }
262
+
263
+ else if(score == "魚"){
264
+
265
+ google.script.run.withSuccessHandler(ListBacks).myloading3();
266
+
267
+ break;
268
+
269
+ }
270
+
271
+ else if(score == "肉"){
272
+
273
+ google.script.run.withSuccessHandler(ListBacks).myloading4();
274
+
275
+ break;
276
+
277
+ }
278
+
279
+ else if(score == "炭水化物"){
280
+
281
+ google.script.run.withSuccessHandler(ListBacks).myloading5();
282
+
283
+ break;
284
+
285
+ }
286
+
287
+ }
288
+
289
+  }
290
+
291
+
292
+
293
+ //リスト読み込み
294
+
295
+ function ListBacks(data) {
296
+
297
+ listdata = data;
298
+
299
+ var list = document.getElementById('list2');
300
+
301
+ for (var i=0; i<data.length; i++){
302
+
303
+ var option = document.createElement('option');
304
+
305
+ option.setAttribute('value', data[i][0]);
306
+
307
+ option.innerHTML = data[i][0];
308
+
309
+ list.appendChild(option);
310
+
311
+ }
312
+
313
+ }
314
+
315
+ function formreset(){
316
+
317
+ google.script.run.withSuccessHandler(ListBacks).resetdata();
318
+
319
+ resetButtonElement = document.getElementById('list2');
320
+
321
+ }
322
+
323
+ resetButtonElement.onchange = function() {
324
+
325
+ formElement.reset();
326
+
327
+ }
328
+
329
+ </script>
330
+
331
+ <script type="text/javascript">
332
+
333
+ </script>
334
+
335
+ </header>
336
+
337
+
338
+
339
+ </table><input type="submit" value="送信" name="送信" >
340
+
341
+ <input type="reset" value="リセット" name="リセット" id="reseter" onclick="formreset()"> 
342
+
343
+ </form>
344
+
345
+ </body>
346
+
347
+ </html>
348
+
349
+ ```
350
+
351
+ ### 試したこと
352
+
353
+ https://teratail.com/questions/10374
354
+
355
+ の質問者様と回答者様のやりとりを拝見して
356
+
357
+ 【コード.gs】
358
+
359
+ ```
360
+
361
+ function resetdata(){
362
+
363
+ var select=document.getElementById("list2");
364
+
365
+ while(0< select.childNodes.length){
366
+
367
+ select.removechild(select.childNodes[0]);//
368
+
369
+ }
370
+
371
+ }
372
+
373
+ ```
374
+
375
+ 【javascript.HTML】
376
+
377
+ ```
378
+
379
+ function formreset(){
380
+
381
+
382
+
383
+ google.script.run.withSuccessHandler(ListBacks).resetdata()
384
+
385
+ resetButtonElement = document.getElementById('list2');
386
+
89
387
  }
90
388
 
91
- 【javascript.HTML】
92
-
93
- <!DOCTYPE html>
94
-
95
- <html>
96
-
97
- <head>
98
-
99
- <base target="_top">
100
-
101
- <?!= HtmlService.createHtmlOutputFromFile('css').getContent();?>
102
-
103
- <title>食べ物の分類</title>
104
-
105
- </head>
106
-
107
- <body>
108
-
109
- <form action="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" method="post">
110
-
111
- <header>
112
-
113
- <h1 class="A">食べ物の分類</h1>
114
-
115
- <h2 class="B"><input type="data"></h2>
116
-
117
- <div id="information">
118
-
119
- <select id="list" name="list" class="mainselect" onchange="addElement(this);formreset()" ; required><br>
120
-
121
- <option value=""></option>
122
-
123
- </select>
124
-
125
- </div>
126
-
127
- <div id="information!">
128
-
129
- <select id="list2" name="list2" class="subbox" ; required><br>
130
-
131
- <option value=""></option>
132
-
133
- </select>
134
-
135
- </div>
136
-
137
- <script>
138
-
139
- function preventFormSubmit() {
140
-
141
389
 
142
390
 
143
- var forms = document.querySelectorAll('index');
144
-
145
- for (var i = 0; i < forms.length; i++) {
146
-
147
- forms[i].addEventListener('submit', function(event) {
148
-
149
- event.preventDefault();
150
-
151
- });
152
-
153
- }
154
-
155
- google.script.run.withSuccessHandler(ListBack).loading();
156
-
157
- }
158
-
159
-
160
-
161
- window.addEventListener('load', preventFormSubmit);
162
-
163
-
164
-
165
- //リスト読み込み
166
-
167
- function ListBack(data) {
168
-
169
- listdata = data;
170
-
171
- var list = document.getElementById('list');
172
-
173
- for (var i=0; i<data.length; i++){
174
-
175
- var option = document.createElement('option');
176
-
177
- option.setAttribute('value', data[i][0]);
178
-
179
- option.innerHTML = data[i][0];
180
-
181
- list.appendChild(option);
182
-
183
- }
184
-
185
- }
186
-
187
-
188
-
189
- function addElement(select) {
190
-
191
-
192
-
193
- for(var i=0; i<listdata.length; i++){
194
-
195
- if(select.value ==listdata[i][0]){
196
-
197
- break;
198
-
199
- }
200
-
201
- }
202
-
203
- var element = document.createElement('div');
204
-
205
- var obj = document.getElementById("information");
206
-
207
- var division = obj.getElementsByTagName('div');
208
-
209
-
210
-
211
- if(division.length > 0){
212
-
213
- obj.removeChild(division[0]);
214
-
215
- }
216
-
217
- element.class = "information";
218
-
219
- obj.appendChild(element);
220
-
221
- mybotton();
222
-
223
- formreset();
224
-
225
- }
226
-
227
-
228
-
229
- function mybotton(){
230
-
231
- var score=document.getElementById("list").value;
232
-
233
- for(var i=0; i<score.length; i++){
234
-
235
- if(score == "果物"){
236
-
237
- google.script.run.withSuccessHandler(ListBacks).myloading();
238
-
239
- break;
240
-
241
- }//}閉じかっこが必要
242
-
243
- else if(score == "野菜"){
244
-
245
- google.script.run.withSuccessHandler(ListBacks).myloading2();
246
-
247
- break;
248
-
249
- }
250
-
251
- else if(score == "魚"){
252
-
253
- google.script.run.withSuccessHandler(ListBacks).myloading3();
254
-
255
- break;
256
-
257
- }
258
-
259
- else if(score == "肉"){
260
-
261
- google.script.run.withSuccessHandler(ListBacks).myloading4();
262
-
263
- break;
264
-
265
- }
266
-
267
- else if(score == "炭水化物"){
268
-
269
- google.script.run.withSuccessHandler(ListBacks).myloading5();
270
-
271
- break;
272
-
273
- }
274
-
275
- }
276
-
277
- }
278
-
279
-
280
-
281
- //リスト読み込み
282
-
283
- function ListBacks(data) {
284
-
285
- listdata = data;
286
-
287
- var list = document.getElementById('list2');
288
-
289
- for (var i=0; i<data.length; i++){
290
-
291
- var option = document.createElement('option');
292
-
293
- option.setAttribute('value', data[i][0]);
294
-
295
- option.innerHTML = data[i][0];
296
-
297
- list.appendChild(option);
298
-
299
- }
300
-
301
- }
302
-
303
- function formreset(){
304
-
305
-
306
-
307
- resetButtonElement = document.getElementById('list2');
308
-
309
- resetButtonElement.onchange = function() {
391
+ resetButtonElement.onchange = function() {
310
-
392
+
311
- formElement.reset();
393
+ formElement.reset();
312
-
313
- }
314
-
315
- </script>
316
-
317
- <script type="text/javascript">
318
-
319
- </script>
320
-
321
- </header>
322
-
323
-
324
-
325
- </table><input type="submit" value="送信" name="送信" >
326
-
327
- <input type="reset" value="リセット" name="リセット" id="reseter" onclick="formreset()"> 
328
-
329
- </form>
330
-
331
- </body>
332
-
333
- </html>
334
-
335
- ### 試したこと
336
-
337
- https://teratail.com/questions/10374
338
-
339
- の質問者様と回答者様のやりとりを拝見して
340
-
341
- 【コード.gs】
342
-
343
- function resetdata(){
344
-
345
- var select=document.getElementById("list2");
346
-
347
- while(0< select.childNodes.length){
348
-
349
- select.removechild(select.childNodes[0]);//
350
-
351
- }
352
394
 
353
395
  }
354
396
 
355
- 【javascript.HTML】
356
-
357
- function formreset(){
358
-
359
-
360
-
361
- google.script.run.withSuccessHandler(ListBacks).resetdata();
362
-
363
- }
397
+ ```
364
-
365
- resetButtonElement = document.getElementById('list2');
366
-
367
-
368
-
369
- resetButtonElement.onchange = function() {
370
-
371
- formElement.reset();
372
-
373
- }
374
-
375
- }
376
398
 
377
399
  という内容のコードを入れてonchangeでフォームの中身が変化した時にformreset関数を実行して非同期でGAS側のresetdata関数を引き起こしてListBacks関数の中に入れるようにしたつもりだったが、動かず代替案としてもう一つボタンを作ってそのボタンを押せばresetdata関数が実行されるようにもテストしてみたがこちらもうまくいきませんでした。
378
400