teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追加質問に対し追記

2016/06/18 22:38

投稿

cisdur
cisdur

スコア46

answer CHANGED
@@ -42,4 +42,31 @@
42
42
  }
43
43
  }
44
44
  ```
45
- 最初のhtmlで、btnDeleteのdisabled属性をtrueにしておくことをお忘れなく。
45
+ 最初のhtmlで、btnDeleteのdisabled属性をtrueにしておくことをお忘れなく。
46
+
47
+ ---
48
+ クラスを使い、追加要素数を数える方向で行きますか。
49
+ クローン元のtr要素に、`class=skill_hoge`を追加しておきます。
50
+ そして、
51
+ ```
52
+ function skill_selectAdd(){
53
+ var get = document.getElementById("skill_select");
54
+ var set = get.cloneNode(true);
55
+ var target = document.getElementById("skill_selectAdd");
56
+ var btn_delete = document.getElementById("btn_delete");
57
+ set.id= "test" + target.children.length; //idの重複を防ぐため、連番をつけておく
58
+ target.parentNode.insertBefore(set, target);
59
+ btn_delete.setAttribute("disabled", "false");
60
+ }
61
+
62
+ function skill_selectDel(){
63
+ var targets = document.getElementsByClassName("skill_hoge");
64
+ var btn_delete = document.getElementById("btn_delete");
65
+ if (targets.length === 2) {
66
+ btn_delete.setAttribute("disabled", "true");
67
+ }
68
+ targets[1].parentnode.removeChild(targets[targets.length - 1]); //最後の要素を削除
69
+ }
70
+ ```
71
+ としてみましょう。
72
+ 念のためですが、`<input type="button" value="削除" onClick="skill_selectDel()">`には`id="btn_delete" disabled="true"`を追加するのですよ。

2

微修正

2016/06/18 22:38

投稿

cisdur
cisdur

スコア46

answer CHANGED
@@ -42,4 +42,4 @@
42
42
  }
43
43
  }
44
44
  ```
45
- 最初のhtmlで、btnDeleteのdisabled属性をfalseにしておくことをお忘れなく。
45
+ 最初のhtmlで、btnDeleteのdisabled属性をtrueにしておくことをお忘れなく。

1

追加質問に対し追記

2016/06/18 02:45

投稿

cisdur
cisdur

スコア46

answer CHANGED
@@ -13,4 +13,33 @@
13
13
  とすればいいと思います。
14
14
 
15
15
  また、1つ気になる点として、function add(){}内でcloneNodeしていますが、このままではidもコピーされてしまうのでは?
16
- クローンしたものはidを削除するなど、工夫が必要かと。
16
+ クローンしたものはidを削除するなど、工夫が必要かと。
17
+
18
+ ---
19
+ (追加質問に対して追記)
20
+ こんなのはどうでしょう。
21
+ やはりスマートとは言い難いかもしれませんが。
22
+
23
+ htmlの`<tr id="skill_selectAdd">`の直前に`<div id="skill_select_added"></div>`とdiv要素を追加し、クローンした要素はこのdivの中に入るようにします。
24
+ ```
25
+ function skill_selectAdd(){
26
+ var get = document.getElementById("skill_select");
27
+ var set = get.cloneNode(true);
28
+ var target = document.getElementById("skill_select_added");
29
+ var btnDelete = document.getElementById("btnDelete ");
30
+ set.id= "test" + target.children.length;
31
+ target.appendChild(set);
32
+ btnDelete.setAttribute("disabled", "false");
33
+ }
34
+ ```
35
+ で、削除するときはこのdiv内から削除していきます。
36
+ ```
37
+ function skill_selectDel(){
38
+ var target = document.getElementById("skill_select_added");
39
+ target.removeChild(target.lastElementChild);
40
+ if (target.children.length === 0) {
41
+ btnDelete.setAttribute("disabled", "true");
42
+ }
43
+ }
44
+ ```
45
+ 最初のhtmlで、btnDeleteのdisabled属性をfalseにしておくことをお忘れなく。