回答編集履歴

3

追加質問に対し追記

2016/06/18 22:38

投稿

cisdur
cisdur

スコア46

test CHANGED
@@ -87,3 +87,57 @@
87
87
  ```
88
88
 
89
89
  最初のhtmlで、btnDeleteのdisabled属性をtrueにしておくことをお忘れなく。
90
+
91
+
92
+
93
+ ---
94
+
95
+ クラスを使い、追加要素数を数える方向で行きますか。
96
+
97
+ クローン元のtr要素に、`class=skill_hoge`を追加しておきます。
98
+
99
+ そして、
100
+
101
+ ```
102
+
103
+ function skill_selectAdd(){
104
+
105
+ var get = document.getElementById("skill_select");
106
+
107
+ var set = get.cloneNode(true);
108
+
109
+ var target = document.getElementById("skill_selectAdd");
110
+
111
+ var btn_delete = document.getElementById("btn_delete");
112
+
113
+ set.id= "test" + target.children.length; //idの重複を防ぐため、連番をつけておく
114
+
115
+ target.parentNode.insertBefore(set, target);
116
+
117
+ btn_delete.setAttribute("disabled", "false");
118
+
119
+ }
120
+
121
+
122
+
123
+ function skill_selectDel(){
124
+
125
+ var targets = document.getElementsByClassName("skill_hoge");
126
+
127
+ var btn_delete = document.getElementById("btn_delete");
128
+
129
+ if (targets.length === 2) {
130
+
131
+ btn_delete.setAttribute("disabled", "true");
132
+
133
+ }
134
+
135
+ targets[1].parentnode.removeChild(targets[targets.length - 1]); //最後の要素を削除
136
+
137
+ }
138
+
139
+ ```
140
+
141
+ としてみましょう。
142
+
143
+ 念のためですが、`<input type="button" value="削除" onClick="skill_selectDel()">`には`id="btn_delete" disabled="true"`を追加するのですよ。

2

微修正

2016/06/18 22:38

投稿

cisdur
cisdur

スコア46

test CHANGED
@@ -86,4 +86,4 @@
86
86
 
87
87
  ```
88
88
 
89
- 最初のhtmlで、btnDeleteのdisabled属性をfalseにしておくことをお忘れなく。
89
+ 最初のhtmlで、btnDeleteのdisabled属性をtrueにしておくことをお忘れなく。

1

追加質問に対し追記

2016/06/18 02:45

投稿

cisdur
cisdur

スコア46

test CHANGED
@@ -29,3 +29,61 @@
29
29
  また、1つ気になる点として、function add(){}内でcloneNodeしていますが、このままではidもコピーされてしまうのでは?
30
30
 
31
31
  クローンしたものはidを削除するなど、工夫が必要かと。
32
+
33
+
34
+
35
+ ---
36
+
37
+ (追加質問に対して追記)
38
+
39
+ こんなのはどうでしょう。
40
+
41
+ やはりスマートとは言い難いかもしれませんが。
42
+
43
+
44
+
45
+ htmlの`<tr id="skill_selectAdd">`の直前に`<div id="skill_select_added"></div>`とdiv要素を追加し、クローンした要素はこのdivの中に入るようにします。
46
+
47
+ ```
48
+
49
+ function skill_selectAdd(){
50
+
51
+ var get = document.getElementById("skill_select");
52
+
53
+ var set = get.cloneNode(true);
54
+
55
+ var target = document.getElementById("skill_select_added");
56
+
57
+ var btnDelete = document.getElementById("btnDelete ");
58
+
59
+ set.id= "test" + target.children.length;
60
+
61
+ target.appendChild(set);
62
+
63
+ btnDelete.setAttribute("disabled", "false");
64
+
65
+ }
66
+
67
+ ```
68
+
69
+ で、削除するときはこのdiv内から削除していきます。
70
+
71
+ ```
72
+
73
+ function skill_selectDel(){
74
+
75
+ var target = document.getElementById("skill_select_added");
76
+
77
+ target.removeChild(target.lastElementChild);
78
+
79
+ if (target.children.length === 0) {
80
+
81
+ btnDelete.setAttribute("disabled", "true");
82
+
83
+ }
84
+
85
+ }
86
+
87
+ ```
88
+
89
+ 最初のhtmlで、btnDeleteのdisabled属性をfalseにしておくことをお忘れなく。