18

作者: Unlash | 来源:发表于2018-08-31 10:31 被阅读0次

读取并修改元素的内容

假设两个select元素,分别保存备选地区列表和选中地区列表

实现两选择框之间选项的交换:

包括:当个选中项左右移动

      多个选中项左右移动

      全左移和全右移

要求:两个select中的地区都要按照名称首字母排序

<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)'>>></button>

        <button onclick='move(this)'>></button>

        <button onclick='move(this)'><</button>

        <button onclick='move(this)'><<</button>

    </div>

<select id="sel" size="8" multiple>

</select>

1)将unsel元素中的所有国家名称填充到unselCts中

unsel的内容去掉开头和结尾的空字符,再掐头去尾,按?切割

unselCts=

  unsel.innerHTML

      .replace(/^\s+|\s+$/g,"")

      .slice(8,-9)

      .split(/<\/option>\s*<option>/);

2)判断btn的内容

是>>,就将unselCts拼接到selCts结尾,再保存回selCts中

function move(btn){

  switch(btn.innerHTML){

    case ">>":

      selCts=selCts.concat(unselCts);

      unselCts=[];//将unselCts清空

      break;

是<<,就将selCts拼接到unselCts结尾,再保存回unselCts中

    case "<<"://

      unselCts=unselCts.concat(selCts);

      selCts=[];//将selCts清空

      break;

是>, 查找id为unsel下的所有option,保存在变量opts中

    case ">":

      var opts=document.querySelectorAll(

        "#unsel>option"

      );

反向遍历opts中每个opt

    for(var i=opts.length-1;i>=0;i--){

        for(var i=0;i<opts.length;i++){

        //如果当前opt的selected为true//为什么用true判断

        if(opts[i].selected){

          //删除unselCts数组中当前位置的元素,再将删除的元素拼接到selCts中

          selCts.push(unselCts.splice(i,1));

        }

    }

    break;

是<,就查找id为sel下的所有option,保存在变量opts中

    case "<":

      var opts=document.querySelectorAll(

        "#sel>option"

      );

反向遍历opts中每个opt

      for(var i=opts.length-1;i>=0;i--){

        for(var i=0;i<opts.length;i++){

        //如果当前opt的selected为true

        if(opts[i].selected){

          //删除selCts数组中当前位置的元素,再将删除的元素拼接到unselCts中

          unselCts.push(selCts.splice(i,1));

        }

      }

  }

将unselCts按国家名称升序排列

unselCts.sort();

将selCts按国家名称升序排序

selCts.sort();

查找id为unsel的元素,保存在unsel中

var unsel=document.getElementById("unsel");

将unselCts数组的内容更新到unsel元素中

updateSel(unselCts,unsel);

查找id为sel的元素,保存在sel中

  var sel=document.getElementById("sel");

将selCts数组的内容更新到sel元素中

  updateSel(selCts,sel);

}

设置sel的内容为:arr按?拼接,补上开头和结尾

function updateSel(arr,sel){

  sel.innerHTML=("<option>"+

    arr.join("</option><option>")

    +"</option>");

}

相关文章

  • 18岁

    18岁 18岁? 18岁! 18岁。 18岁是什么? 18随意味着什么? 哎,18岁…… 常感慨时光的远去,岁月...

  • 19和18

    19是质数, 18是合数。 19是奇数, 18是偶数。 18相遇18, 18成为19。 18 19, 相隔不多, ...

  • 🌿YQ成长记录20221025星期二

    17:10-17:35 数学作业 17:35-18:13 语文作业 18:13-18:38 吃饭 18:38-18...

  • 致18年后你们的一封信

    各位学子, 你们好!当你们读到这封信时,18年已经过去了。18年前,我18岁;18年后,你们18岁。18年...

  • 永远18岁

    是的,永远18岁!18岁时,激昂于心,目标远大!18岁时,无所畏惧,大胆前行! …… 我的18岁,已离我18岁!岁...

  • 风语|台阶

    风语||台阶 我喜欢泰山18盘的台阶。泰山18盘分为紧18盘、慢18盘、不紧不慢18盘,共1630级,倾角70-8...

  • 十八岁,安好

    18岁,多好的名字 18岁,多么美的日子 18岁,湛蓝湛蓝的情怀 18岁,火苗一样的心跳 18岁,晴空一鹤排云上 ...

  • 麦门冬汤证治本位的意义

    《圆运动的古中医学》原文 译文 麦门冬汤证治本位的意义 麦门冬18克,党参18克,炙草18克,粳米18克,大枣18...

  • 庐山六月二十六

    中午吃饭122.74 早上吃饭6+6+8 缆车150+18+18+18

  • 感恩与反思1.18

    2020.01.18,天气阴转小雨,9-18°。 早起打卡: 坚持早睡早起18天,坚持运动18天,坚持阅读18天。...

网友评论

      本文标题:18

      本文链接:https://www.haomeiwen.com/subject/oxcswftx.html