質問: 下記のエレメントを追加するjsなのですが、10個以上追加できないようにするには、 どう工夫したらよろしいでしょうか...? ``` ```
回答: ドロップダウン数を管理する `var selectCnt = 0;` のような変数を用意して、 ドロップダウンを追加したら `selectCnt += 1;` ドロップダウンを削除したら `selectCnt -= 1;` などのように増減する。 ドロップダウンを追加しようとした際に「ドロップダウン数が10以上かどうか」をチェックして、 上限を超えているようであれば追加させない、のようにすると良いのではないでしょうか。 ・・・と、リロードしたら他の方の回答が付いてました。 すいません ちょっと元ソースちゃんと読みます。 ``` function skill_selectAdd(){ var get = document.getElementById("skill_select"); //★ を取る var set = get.cloneNode(true); //★ それをコピーする var target = document.getElementById("skill_selectAdd"); //★ それとは別に を取る var btn_delete = document.getElementById("skill_select_btnDel"); //★ button id="skill_select_btnDel" を取る set.id= "test" + target.children.length;//idの重複を防ぐため、連番をつけておく //★ 「コピーしたtr」にidをつける target.parentNode.insertBefore(set, target); //★ target の親に「コピーしたtr」を追加 btn_delete.disabled = false; //★削除ボタンを有効化 } ``` えーっと をコピーして、 の兄弟要素として追加してる、んですかね。 じゃあ の children.length 取ってもダメか。 (てかそれだとそもそも "idの重複を防ぐため、連番をつけておく" の部分も間違いです?) うーん、tr の parentNode から tr 数を取って、 追加&削除ボタンの tr はカウント対象外だから -1 して・・・とかもできますけど 私だったらドロップダウン用の tr に それ用の class を指定して、それでカウントしますかねえ・・・ (それか最初に書いたカウント用変数を使う版ですけど・・・でも class かなあ) # すいません 脊髄反射で回答してしまって・・・