質問編集履歴

1

コードを二重で掲載してしまったため修正。

2016/04/26 09:30

投稿

azxsedcvfr
azxsedcvfr

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,63 @@
1
+ ###前提・実現したいこと
2
+
3
+ 簡単なタスクリストを作っています。
4
+
5
+
6
+
7
+ 登録ボタンを押すことで、タスクリストに登録されます。
8
+
9
+ 登録したタスクには優先度セレクトボックスと完了ボタンが付きます。
10
+
11
+ 3択の優先度セレクトボックスを選ぶことでタスクの色が決まります。
12
+
13
+ (今すぐは赤、後では黄、時間があればは青)
14
+
15
+
16
+
17
+ また登録した後もそれぞれのタスクの横についたセレクトボックスの優先度を変更すると
18
+
19
+ それに伴い、タスクの色も変わる。(例.今すぐ→後で に変更すると 赤→黄にタスクの色が変わる)
20
+
21
+
22
+
23
+ タスクについた完了ボタンを押すことで
24
+
25
+ タスクはタスクリストから完了リストに移動します。
26
+
27
+ またこの時セレクトボックスと完了ボタンは削除されます。
28
+
29
+
30
+
31
+ こういった機能のタスクリストを作ろうとしています。
32
+
33
+
34
+
35
+
36
+
37
+ ###発生している問題・エラーメッセージ
38
+
39
+
40
+
41
+ ```
42
+
43
+ 登録したタスクのセレクトボックスの優先度を変更するとタスクの色は変わらず↓下記エラーが出る。
44
+
45
+ practice.js:56 Uncaught TypeError: Cannot read property 'style' of undefined
46
+
47
+
48
+
49
+ 登録したタスクの完了ボタンを押すとセレクトボックスは削除されず↓下記エラーが出る。
50
+
51
+ practice.js:38 Uncaught TypeError: Cannot read property 'removeChild' of undefined
52
+
53
+ ```
54
+
55
+
56
+
57
+ ###該当のソースコード
58
+
59
+ ```JavaScript
60
+
1
61
  var TaskRegister = { /*全体まとめ*/
2
62
 
3
63
  init: function init() {
@@ -174,244 +234,8 @@
174
234
 
175
235
 
176
236
 
177
- ###前提・実現したいこと
178
-
179
- 簡単なタスクリストを作っています。
180
-
181
-
182
-
183
- 登録ボタンを押すことで、タスクリストに登録されます。
184
-
185
- 登録したタスクには優先度セレクトボックスと完了ボタンが付きます。
186
-
187
- 3択の優先度セレクトボックスを選ぶことでタスクの色が決まります。
188
-
189
- (今すぐは赤、後では黄、時間があればは青)
190
-
191
-
192
-
193
- また登録した後もそれぞれのタスクの横についたセレクトボックスの優先度を変更すると
194
-
195
- それに伴い、タスクの色も変わる。(例.今すぐ→後で に変更すると 赤→黄にタスクの色が変わる)
196
-
197
-
198
-
199
- タスクについた完了ボタンを押すことで
200
-
201
- タスクはタスクリストから完了リストに移動します。
202
-
203
- またこの時セレクトボックスと完了ボタンは削除されます。
204
-
205
-
206
-
207
- こういった機能のタスクリストを作ろうとしています。
208
-
209
-
210
-
211
-
212
-
213
- ###発生している問題・エラーメッセージ
214
-
215
-
216
-
217
237
  ```
218
238
 
219
- 登録したタスクのセレクトボックスの優先度を変更するとタスクの色は変わらず↓下記エラーが出る。
220
-
221
- practice.js:56 Uncaught TypeError: Cannot read property 'style' of undefined
222
-
223
-
224
-
225
- 登録したタスクの完了ボタンを押すとセレクトボックスは削除されず↓下記エラーが出る。
226
-
227
- practice.js:38 Uncaught TypeError: Cannot read property 'removeChild' of undefined
228
-
229
- ```
230
-
231
-
232
-
233
- ###該当のソースコード
234
-
235
- ```JavaScript
236
-
237
- var TaskRegister = { /*全体まとめ*/
238
-
239
- init: function init() {
240
-
241
- var input = document.getElementById('task');
242
-
243
- var selector = document.getElementById('priority');
244
-
245
- var btn = document.getElementById('registration');
246
-
247
-
248
-
249
- btn.addEventListener('click', function (select){
250
-
251
- var color = Priority.getColor(selector.value);
252
-
253
- var task = Task.create(input.value, color);
254
-
255
- List.addTask(task);
256
-
257
- });
258
-
259
- }
260
-
261
- };
262
-
263
-
264
-
265
- var Task = { /*登録ボタン関連*/
266
-
267
- create: function create(text, color) {
268
-
269
- var item = document.createElement('li');
270
-
271
- var btn = Button.create(item);
272
-
273
- var select = SelectClone.clone();
274
-
275
-
276
-
277
- item.innerHTML = text;
278
-
279
- item.appendChild(select);
280
-
281
- item.style.color = color;
282
-
283
- item.appendChild(btn);
284
-
285
- return item;
286
-
287
- }
288
-
289
- };
290
-
291
-
292
-
293
- var Button = { /*完了ボタン関連*/
294
-
295
- create: function create(task, select, item) {
296
-
297
- var btn = document.createElement('button');
298
-
299
- btn.innerHTML = '完了';
300
-
301
-
302
-
303
- btn.addEventListener('click', function (select) {
304
-
305
- List.removeTask(task);
306
-
307
- List.addDone(task);
308
-
309
- task.removeChild(btn);
310
-
311
- item.removeChild(select);
312
-
313
- });
314
-
315
- return btn;
316
-
317
- }
318
-
319
- };
320
-
321
-
322
-
323
- var SelectClone = { /*クローン関連*/
324
-
325
- clone: function clone (item) {
326
-
327
- var priority = document.getElementById("priority");
328
-
329
- var selectClone = priority.cloneNode(true);
330
-
331
-
332
-
333
- for (var i = 0; i < selectClone.children.length; i++) {
334
-
335
- if (priority.value === selectClone.children[i].value) {
336
-
337
- selectClone.children[i].selected = true;
338
-
339
- }
340
-
341
- }
342
-
343
-
344
-
345
- selectClone.addEventListener("change", function (event, item) {
346
-
347
- item.style.color = Priority.getColor(event.target.value);
348
-
349
- });
350
-
351
- return selectClone;
352
-
353
- }
354
-
355
- };
356
-
357
-
358
-
359
- var List = { /*リスト関連*/
360
-
361
- addTask: function add(task) {
362
-
363
- document.getElementById('taskList').appendChild(task);
364
-
365
- },
366
-
367
-
368
-
369
- removeTask: function remove(task) {
370
-
371
- document.getElementById('taskList').removeChild(task);
372
-
373
- },
374
-
375
-
376
-
377
- addDone: function add(task) {
378
-
379
- document.getElementById('doneList').appendChild(task);
380
-
381
- }
382
-
383
- };
384
-
385
-
386
-
387
-
388
-
389
- var Priority = { /*優先度の色*/
390
-
391
- getColor: function getColor(value) {
392
-
393
- switch ( Number(value) ) {
394
-
395
- case 1: return '#f62';
396
-
397
- case 2: return '#fc0';
398
-
399
- case 3: return '#0af';
400
-
401
- }
402
-
403
- }
404
-
405
- };
406
-
407
-
408
-
409
- window.addEventListener('load', TaskRegister.init);
410
-
411
-
412
-
413
- ```
414
-
415
239
 
416
240
 
417
241
  ###試したこと