まずjsonファイルなどからselect項目を生成し、次にselectで項目を選択すると、選択した内容の要素をHTMl上に生成されるようにしたい(最初から要素が生成されている場合もあり)です。
またその際、要素が生成されている項目はselectの内容から削除されるようにしたいと考えています。
そして新たに生成された要素を削除した場合には、再びselectの内容に入るようにしたいです。
jsonファイルからselectを生成することはできたのですが、
困っているのが選択した要素をselectから削除して、新たに要素を生成する方法と、要素が生成されている場合、selectからその内容を削除する方法が知りたいです。
またできれば、この内容をページ内に複数入れる予定ですので、スクリプトをある程度まとめられると理想的です。
(難しければそれぞれのスクリプトを記述予定です)
json
1[ 2 {"id":1,"value":"yasai_01","name":"きゅうり"}, 3 {"id":2,"value":"yasai_02","name":"ねぎ"}, 4 {"id":3,"value":"yasai_03","name":"レタス"}, 5 {"id":4,"value":"yasai_04","name":"ナス"}, 6 {"id":5,"value":"yasai_05","name":"トマト"}, 7 {"id":6,"value":"yasai_06","name":"キャベツ"} 8]
javascript
1$(function () { 2 $('.js-delete').click(function(){ 3 $(this).parent().remove(); 4 return false; 5 }); 6 7 $.getJSON("js/yasai.json" , function(diploma) { 8 var 9 ulObj = $(".js-select_yasai"), 10 len = diploma.length; 11 12 for(var i = 0; i < len; i++) { 13 ulObj.append($("<option>").attr({ 14 id:yasai[i].id, 15 value:yasai[i].value 16 }).text(yasai[i].name)); 17 } 18 }); 19 20}); 21
HTML
1<p id="yasai_02">ねぎ<a href="" class="js-delete">削除</a></p><!--最初から項目が作られている場合もあり--> 2<label class="form_select" for="form_select_yasai"> 3 <select class="js-select_yasai" id="form_select_yasai" name="yasai"> 4 <option value="野菜を追加" disabled selected>野菜を追加</option> 5 <!--この場合、ねぎが最初からあるので読み込んだjsonのリストからネギは外した形でoptionにそれ以外のものを流し込みたいです。 6 またoptionで例えばトマトなどを選択した場合、ねぎのpタグの下にトマトのpタグが作られ、optionのトマトは削除されるという挙動にしたいです。--> 7 </select> 8</label> 9※似たような内容で例えば果物などがこの後に出てくる想定です。
スクリプト内では、selectでoptionを選んだら、その内容を取得して、整形してpタグに出力し、
HTML内のyasaiとついたidを取得し、番号が一致するoptionをリストから削除するという流れなのかなと思っていますが、やり方がわかりません。
あまりスクリプトに詳しくないので、できればサンプルを書いていただけると嬉しいです。
お手数をおかけしますが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/27 06:03
2021/08/27 06:29 編集
2021/08/27 06:38
2021/09/04 08:56