1+x课程作业 -穿梭框

简介: 1+x课程作业 -穿梭框

HTML


<div class="main">
      <div class="left box">
        <h3>列表一</h3>
        <ul id="clickLeft" class="select">
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 1</span></li>
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 2</span></li>
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 3</span></li>
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 4</span></li>
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 5</span></li>
        </ul>
      </div>
      <div class="operation">
        <span class="btn toleft "> --> </span>
        <span class="btn toright"> <-- </span>
      </div>
      <div class="right box">
        <h3>列表二</h3>
        <ul id="clickRight" class="select">
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 7</span></li>
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 8</span></li>
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 9</span></li>
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 10</span></li>
          <li><input type="checkbox"><span>穿梭框列表内容 ---- 11</span></li>
        </ul>
      </div>
    </div>


css


* {
  font-size: 14px;
}
 
ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
 
.main {
  width: 500px;
  margin: 20px auto;
  display: flex;
}
 
.box {
  position: relative;
  width: 220px;
  min-height: 350px;
  border: 1px solid #d9d9d9;
  border-radius: 3px;
  background: #fff;
}
 
.operation {
  padding: 107px 20px 0 40px;
}
 
.operation span {
  display: block;
  width: 43px;
  height: 28px;
  text-align: center;
  position: relative;
  cursor: pointer;
  border: 1px solid #d9d9d9;
  border-radius: 4px;
}
 
h3 {
  text-align: center;
  border-bottom: 1px solid #ddd;
}
 
.select li {
  padding: 10px 8px;
}
 
 
.current {
  background-color: #1890FF;
  color: #FFFFFF;
}
 
.operation span:hover {
  background-color: #1890FF;
  color: #FFFFFF;
}


JS


方法一:

//    定义全局变量
    var list = []; //存储选框中的列表
    var flag = "left"; //定义标记判断是选中左边还是右边
    var checklist = 0; //存储input框选中数量
    //穿梭框左侧选中
    //任务1:步骤2——给左侧列表中的单选框,绑定点击事件
    $("#clickLeft input").click(function() {
      flag = "left";
      onCurrent(flag)
    });
    //穿梭框右侧选中
    //任务1:步骤3——给右侧列表中的单选框,绑定点击事件
    $("#clickRight input").click(function() {
      flag = "right";
      onCurrent(flag)
    });
    //向左移动
    $(".toleft").click(function() {
      //任务2:步骤1——获取左侧input框数组集合
      list = $("#clickLeft input");   
      //任务2:步骤2——获取左侧input框 选中 数量
      checklist = $("#clickLeft input:checkbox:checked ");
      flag = "left";
      if (checklist.length > 0) {
        takelist(flag);
      }
    });
    //向右移动
    $(".toright").click(function() {
      //任务2:步骤3——获取右侧input框数组集合
      list = $("#clickRight input");
      //任务2:步骤4——获取右侧input框 选中 数量
      checklist = $("#clickRight input:checkbox:checked ");
      flag = "right";
      if (checklist.length > 0) {
        takelist(flag);
      }
    });
 
    //遍历实现穿梭
    function takelist(flag) {
      //任务3:步骤1——遍历list数组
      for (var i = 0; i < list.length; i++) {
        if (list[i].checked) {
          //任务3:步骤2——清除选中状态
          list[i].checked = false;
          //任务3:步骤3——定义变量ele,存储选中input框父元素
          var ele = list[i].parentElement;
          //任务3:步骤4——清除对应列表中的选中的元素        
          ele.remove();                 
          if (flag == "left") {
            //任务3:步骤5——将元素插入到左侧选框中最前            
            $("#clickRight").prepend(ele);
          } else if (flag == "right") {
            //任务3:步骤6——将元素插入到右侧选框中最前              
            $("#clickLeft").prepend(ele);
          }
        }
      }
      onCurrent(flag)
    };
    //判断移动按钮是否高亮显示
    function onCurrent(flag) {
      if (flag == "left") {
        //任务4:步骤1——获取左侧input框选中数量赋值给checklist
        var checklist = $("#clickLeft input:checkbox:checked ")
        if (checklist.length > 0) {
          //任务4:步骤2——为左边移动按钮添加样式“current”         
          $(".toleft").addClass("current");
        } else {
          //任务4:步骤3——为左边移动按钮删除样式“current”
          $(".toleft").removeClass("current");
        }
      } else {
        //任务4:步骤4——获取右侧input框选中数量赋值给checklist
        var checklist = $("#clickRight input:checkbox:checked ")
        if (checklist.length > 0) {
          //任务4:步骤5—为右边移动按钮添加样式“current”
          $(".toright").addClass("current");
        } else {
          //任务4:步骤6—为右边移动按钮删除样式“current”
          $(".toright").removeClass("current");
        }
      }
 
    }

方法二:有点小问题

var flag = "left"; //定义标记判断是选中左边还是右边
//穿梭框左侧选中
//任务1:步骤2——给左侧列表中的单选框,绑定点击事件
$("#clickLeft input").click(function() {
  flag = "left";
  onCurrent(flag)
});
//穿梭框右侧选中
//任务1:步骤3——给右侧列表中的单选框,绑定点击事件
$("#clickRight input").click(function() {
  flag = "right";
  onCurrent(flag)
});
 
$(".toleft").on("click", function() {
  var checklist = $("#clickLeft input:checkbox:checked ");
  for (var i = 0; i < checklist.length; i++) {
    //checklist是jquery对象
    //checklist是Element节点
    checklist[i].parentElement.remove();
    $("#clickRight").prepend(checklist[i].parentElement); //移动到右边
    checklist[i].checked = false; //清除样式勾勾
  }
});
$(".toright").on("click", function() {
  var checklist = $("#clickRight input:checkbox:checked ");
  for (var i = 0; i < checklist.length; i++) {
    //checklist是jquery对象
    //checklist是Element节点
    checklist[i].parentElement.remove();
    $("#clickLeft").prepend(checklist[i].parentElement); //
    checklist[i].checked = false; //清除样式勾勾
  }
});
//判断移动按钮是否高亮显示
    function onCurrent(flag) {
      if (flag == "left") {
        //任务4:步骤1——获取左侧input框选中数量赋值给checklist
        var checklist = $("#clickLeft input:checkbox:checked ")
        if (checklist.length > 0) {
          //任务4:步骤2——为左边移动按钮添加样式“current”         
          $(".toleft").addClass("current");
        } else {
          //任务4:步骤3——为左边移动按钮删除样式“current”
          $(".toleft").removeClass("current");
        }
      } else {
        //任务4:步骤4——获取右侧input框选中数量赋值给checklist
        var checklist = $("#clickRight input:checkbox:checked ")
        if (checklist.length > 0) {
          //任务4:步骤5—为右边移动按钮添加样式“current”
          $(".toright").addClass("current");
        } else {
          //任务4:步骤6—为右边移动按钮删除样式“current”
          $(".toright").removeClass("current");
        }
      }
}

笔记:


左对右错,“获取 ”应没有 var=

list[i] 不是 checklist[i],                 父元素--parentElement

这里有源码

补充:理论上checklist[i]也应该可以,试了一下成功了。之前没跑起来原因应该是只改了一部分为checklist,然后找不着list。

相关文章
|
26天前
|
监控 算法 数据安全/隐私保护
基于视觉工具箱和背景差法的行人检测,行走轨迹跟踪,人员行走习惯统计matlab仿真
该算法基于Matlab 2022a,利用视觉工具箱和背景差法实现行人检测与轨迹跟踪,通过构建背景模型(如GMM),对比当前帧与模型差异,识别运动物体并统计行走习惯,包括轨迹、速度及停留时间等特征。演示三维图中幅度越大代表更常走的路线。完整代码含中文注释及操作视频。
|
4月前
|
数据可视化 SDN Python
复动力系统 | 混沌 | Lozi 映射吸引子的可视化与交互式探索
该文介绍了一篇关于Lozi映射吸引子可视化和交互式探索的文章。Lozi映射是混沌理论中的一个模型,展示非线性动力系统的复杂性。通过Python和matplotlib,作者实现了Lozi映射的可视化,并添加交互功能,允许用户缩放以详细观察混沌吸引子。文中还给出了Lozi映射的数学定义,并提供了Python代码示例,演示如何绘制和动态调整吸引子的显示。
|
前端开发
前端学习笔记202305学习笔记第二十三天-散点路线图设置
前端学习笔记202305学习笔记第二十三天-散点路线图设置
42 0
|
前端开发
前端学习笔记202305学习笔记第二十三天-区域文字和立体设置
前端学习笔记202305学习笔记第二十三天-区域文字和立体设置
41 0
|
5月前
|
前端开发
前端知识笔记(十三)———单全选框控制方法,炒鸡无敌方便!!!
前端知识笔记(十三)———单全选框控制方法,炒鸡无敌方便!!!
29 0
|
算法 计算机视觉 C++
机甲大师:矩形框选(23/4/23已更新)
机甲大师:矩形框选(23/4/23已更新)
33 0
|
前端开发 定位技术
前端学习笔记202305学习笔记第二十三天-地图单线路线设置
前端学习笔记202305学习笔记第二十三天-地图单线路线设置
58 0
|
算法 计算机视觉
一种新的基于区域的在线活动轮廓模型研究(Matlab代码实现)
一种新的基于区域的在线活动轮廓模型研究(Matlab代码实现)