●実現したいこと
下の図でAで選択したもの(複数選択)をBの項目に追加したいです。その際に、Aで選択して追加を押した際は、Aから消えてBに追加させたいです。
●現時点でできていること・うまくいっていないこと
追加を押した際に、メンバーの追加は、できるが、複数人選択して追加を押すと
上の人のみが追加されている現状です。AさんとCせんなら、Aさんのみ追加されています。
html部分
//Bの部分 <select name="addressId" size="9" multiple="multiple" id="addressList" class="pickList"> </select> //Aの部分 <select size="7" name="choiceList" multiple="multiple" id="addressChoiceList"> <option value="27648518">Aさん (x.xxxxx@xxxxx.jp)</option> <option value="27648519">Bさん (x.xxxxx@xxxxx.jp)</option> <option value="27648520">Cさん (x.xxxxx@xxxxx.jp)</option> <option value="27648521">Dさん (x.xxxxx@xxxxx.jp)</option> </select> //追加のリンク <p> <a href="javascript:void(0);" class="button--choice__operation choiceAdd" title="追加" onclick="member_add_btn();"> <span>追加</span> </a> </p>
javaScript部分
//追加を押した時の処理 function member_add_btn(){ // 追加したい親要素を取得 var addressList = document.getElementById('addressList'); //選択する候補 var member = document.chat_theme.choiceList; //選択したものを配列に追加する var arr = []; //追加ボタンを押した時にaddressListに追加される var optionMember = document.createElement('option'); //すべてのoption要素を取得する var elements = member.options; //順番を取得 var num = member.selectedIndex; var idx = 0; //選択されたものを配列に格納する for(var i = 0;i<elements.length;i++){ elements[num].selected = true; if(elements.selected){ arr[idx] = i; idx++; } } //選択されたものを追加先のselectボックスに追加する for (var i=0;i<member.length; i++){ if(elements[num].selected == true){ arr.push(member[num].value); arr.push(member[num].innerText); // value値を取得 optionMember.setAttribute('value',member[num].value); // 名前を取得する optionMember.innerText = arr[i]; addressList.appendChild(optionMember); } } }
よろしければ、教えていただけると幸いです。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/28 02:54