回答編集履歴

3

特定用の class を付けるべきは td ではなく tr

2016/06/21 04:03

投稿

sk_3122
sk_3122

スコア1126

test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  追加&削除ボタンの tr はカウント対象外だから -1 して・・・とかもできますけど
82
82
 
83
- 私だったらドロップダウン用の td に それ用の class を指定して、それでカウントしますかねえ・・・
83
+ 私だったらドロップダウン用の tr に それ用の class を指定して、それでカウントしますかねえ・・・
84
84
 
85
85
  (それか最初に書いたカウント用変数を使う版ですけど・・・でも class かなあ)
86
86
 

2

色々間違っていたので書き直し。

2016/06/21 04:03

投稿

sk_3122
sk_3122

スコア1126

test CHANGED
@@ -1,10 +1,10 @@
1
- ボタン数を管理する `var btnCount = 0;` のような変数を用意して、
1
+ ドロップダウン数を管理する `var selectCnt = 0;` のような変数を用意して、
2
2
 
3
3
 
4
4
 
5
- ボタンを追加したら `btnCount += 1;`
5
+ ドロップダウンを追加したら `selectCnt += 1;`
6
6
 
7
- ボタンを削除したら `btnCount -= 1;`
7
+ ドロップダウンを削除したら `selectCnt -= 1;`
8
8
 
9
9
 
10
10
 
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- ボタンを追加しようとした際に「ボタン数が10以上かどうか」をチェックして、
15
+ ドロップダウンを追加しようとした際に「ドロップダウン数が10以上かどうか」をチェックして、
16
16
 
17
17
  上限を超えているようであれば追加させない、のようにすると良いのではないでしょうか。
18
18
 
@@ -20,22 +20,70 @@
20
20
 
21
21
  ----
22
22
 
23
-
24
-
25
- ・・・ってここまで書いてリロードしたら他の方の回答が付いてました
23
+ ・・・と、リロードしたら他の方の回答が付いてました
26
-
27
- そうですね、length 取れば良いだけですね;;
28
24
 
29
25
 
30
26
 
31
- target.children.length は <tr id="skill_selectAdd"> の子要素の数
32
-
33
- = このソースだと <tr id="skill_selectAdd"> 配下の <td> の数
34
-
35
- 「追加&削除ボタンのセット数」です。
27
+ すいません ちょっと元ソースちゃんと読みます。
36
28
 
37
29
 
38
30
 
39
- ボタンの追加処理に入る前にこれをチェックして
31
+ ```
40
32
 
33
+ function skill_selectAdd(){
34
+
35
+ var get = document.getElementById("skill_select"); //★ <tr id="skill_select"> を取る
36
+
37
+
38
+
39
+ var set = get.cloneNode(true); //★ それをコピーする
40
+
41
+
42
+
43
+ var target = document.getElementById("skill_selectAdd"); //★ それとは別に <tr id="skill_selectAdd"> を取る
44
+
45
+
46
+
47
+ var btn_delete = document.getElementById("skill_select_btnDel"); //★ button id="skill_select_btnDel" を取る
48
+
49
+
50
+
51
+ set.id= "test" + target.children.length;//idの重複を防ぐため、連番をつけておく //★ 「コピーしたtr」にidをつける
52
+
53
+
54
+
55
+ target.parentNode.insertBefore(set, target); //★ target の親に「コピーしたtr」を追加
56
+
57
+
58
+
59
+ btn_delete.disabled = false; //★削除ボタンを有効化
60
+
61
+ }
62
+
63
+ ```
64
+
65
+
66
+
67
+ えーっと
68
+
69
+ <tr id="skill_select"> をコピーして、
70
+
71
+ <tr id="skill_selectAdd"> の兄弟要素として追加してる、んですかね。
72
+
73
+ じゃあ <tr id="skill_selectAdd"> の children.length 取ってもダメか。
74
+
75
+ (てかそれだとそもそも "idの重複を防ぐため、連番をつけておく" の部分も間違いです?)
76
+
77
+
78
+
41
- 上限を超えているよ追加せず処理抜ければ良いと思います。
79
+ ーん、tr の parentNode か tr 数取って、
80
+
81
+ 追加&削除ボタンの tr はカウント対象外だから -1 して・・・とかもできますけど
82
+
83
+ 私だったらドロップダウン用の td に それ用の class を指定して、それでカウントしますかねえ・・・
84
+
85
+ (それか最初に書いたカウント用変数を使う版ですけど・・・でも class かなあ)
86
+
87
+
88
+
89
+ # すいません 脊髄反射で回答してしまって・・・

1

記述に誤りがあったので修正。target\.children\.length はボタンの数ではない

2016/06/21 03:48

投稿

sk_3122
sk_3122

スコア1126

test CHANGED
@@ -28,7 +28,13 @@
28
28
 
29
29
 
30
30
 
31
- target.children.length がボタンの数なので、
31
+ target.children.length は <tr id="skill_selectAdd"> 子要素の
32
+
33
+ = このソースだと <tr id="skill_selectAdd"> 配下の <td> の数
34
+
35
+ = 「追加&削除ボタンのセット数」です。
36
+
37
+
32
38
 
33
39
  ボタンの追加処理に入る前にこれをチェックして
34
40