js

讀取并修改元素的內(nèi)容

假設(shè)兩個(gè)select元素,分別保存?zhèn)溥x地區(qū)列表和選中地區(qū)列表
實(shí)現(xiàn)兩選擇框之間選項(xiàng)的交換:
包括:當(dāng)個(gè)選中項(xiàng)左右移動(dòng)
多個(gè)選中項(xiàng)左右移動(dòng)
全左移和全右移
要求:兩個(gè)select中的地區(qū)都要按照名稱首字母排序

<select id="unsel" size="8" multiple>
        <option>Argentina</option>
        <option>Brazil</option>
        <option>Canada</option>
        <option>Chile</option>
        <option>China</option>
        <option>Cuba</option>
        <option>Denmark</option>
        <option>Egypt</option>
        <option>France</option>
        <option>Greece</option>
        <option>Spain</option>
</select>
    <div>
        <button onclick='move(this)'>&gt;&gt;</button>
        <button onclick='move(this)'>&gt;</button>
        <button onclick='move(this)'>&lt;</button>
        <button onclick='move(this)'>&lt;&lt;</button>
    </div>
<select id="sel" size="8" multiple>
</select>

1)將unsel元素中的所有國(guó)家名稱填充到unselCts中

unsel的內(nèi)容去掉開(kāi)頭和結(jié)尾的空字符,再掐頭去尾,按?切割

unselCts=
  unsel.innerHTML
       .replace(/^\s+|\s+$/g,"")
       .slice(8,-9)
       .split(/<\/option>\s*<option>/);

2)判斷btn的內(nèi)容

是>>,就將unselCts拼接到selCts結(jié)尾,再保存回selCts中

function move(btn){
  switch(btn.innerHTML){
    case "&gt;&gt;":
      selCts=selCts.concat(unselCts);
      unselCts=[];//將unselCts清空
      break;
是<<,就將selCts拼接到unselCts結(jié)尾,再保存回unselCts中

    case "&lt;&lt;"://
      unselCts=unselCts.concat(selCts);
      selCts=[];//將selCts清空
      break;
是>, 查找id為unsel下的所有option,保存在變量opts中

    case "&gt;":
      var opts=document.querySelectorAll(
        "#unsel>option"
      );
反向遍歷opts中每個(gè)opt

    for(var i=opts.length-1;i>=0;i--){
        for(var i=0;i<opts.length;i++){
        //如果當(dāng)前opt的selected為true//為什么用true判斷
        if(opts[i].selected){
          //刪除unselCts數(shù)組中當(dāng)前位置的元素,再將刪除的元素拼接到selCts中
          selCts.push(unselCts.splice(i,1));
        }
    }
    break;
是<,就查找id為sel下的所有option,保存在變量opts中
    case "&lt;":
      var opts=document.querySelectorAll(
        "#sel>option"  
      );
反向遍歷opts中每個(gè)opt

      for(var i=opts.length-1;i>=0;i--){
        for(var i=0;i<opts.length;i++){
        //如果當(dāng)前opt的selected為true
        if(opts[i].selected){
          //刪除selCts數(shù)組中當(dāng)前位置的元素,再將刪除的元素拼接到unselCts中
          unselCts.push(selCts.splice(i,1));
        }
      }
  }

將unselCts按國(guó)家名稱升序排列

unselCts.sort();
將selCts按國(guó)家名稱升序排序

selCts.sort();
查找id為unsel的元素,保存在unsel中

var unsel=document.getElementById("unsel");
將unselCts數(shù)組的內(nèi)容更新到unsel元素中

 updateSel(unselCts,unsel);
查找id為sel的元素,保存在sel中

  var sel=document.getElementById("sel");
將selCts數(shù)組的內(nèi)容更新到sel元素中

  updateSel(selCts,sel);
}

設(shè)置sel的內(nèi)容為:arr按?拼接,補(bǔ)上開(kāi)頭和結(jié)尾

function updateSel(arr,sel){
  sel.innerHTML=("<option>"+
    arr.join("</option><option>")
    +"</option>");
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 繚繞在小島的情思是刺槐花的顏色, 因那小魚(yú)村就坐落在刺槐林里。 刺槐花開(kāi)的季節(jié)海浪花也特好看, 而最好看的是她穿著...
    程力ZKX閱讀 316評(píng)論 0 1
  • 今天看了由優(yōu)秀主持人撒貝寧主播的青年公開(kāi)課堂《開(kāi)講啦》 ,這也是我最喜歡的綜藝節(jié)目之一。 其中一期是比亞迪總裁王傳...
    阿丹dan閱讀 295評(píng)論 0 2
  • 親愛(ài)的爸爸媽媽: 我是你們最疼愛(ài)的女兒艷平,以前老覺(jué)著自己是最不被疼愛(ài)的一個(gè),可現(xiàn)在回頭想想,自己卻是被愛(ài)的最多、...
    為愛(ài)分享閱讀 163評(píng)論 0 0

友情鏈接更多精彩內(nèi)容