循环调节列表

作者: 千茉紫依 | 来源:发表于2019-04-01 15:03 被阅读0次
页面上有这么一个列表:
<ul id='adjustable-list'>
  <li>
    <span>1</span>
    <button class='up'>UP</button>
    <button class='down'>DOWN</button>
  </li>
  <li>
    <span>2</span>
    <button class='up'>UP</button>
    <button class='down'>DOWN</button>
  </li>
  <li>
    <span>3</span>
    <button class='up'>UP</button>
    <button class='down'>DOWN</button>
  </li>
  ...
</ul>

点击 UP 按钮会使得该 li 元素在列表中上升一个位置,点击 DOWN 按钮会使得该 li 元素下降一个位置。点击最后的元素的 DOWN 按钮会使得元素回到第一个位置,点击第一个元素的 UP 按钮会使其回到最后的位置。

完成 initAdjustableList() 函数,给元素添加事件。

答案
值得注意的点:
1、使用getElementsBy获得的dom是伪数组,无法执行forEach函数,要用[...]或者Array.from、来转换。
2、parentNode有insertBefore方法,语法是parentNode.insertBefore(cur,target)将cur节点插入到target之前。
3、由于没有insertAfter方法,所以要使用以下代码来模拟该方法

    let next=lis[idx+1]
     if(!next){
          ul.insertBefore(curLi,lis[0])
      }else{
           ul.insertBefore(next,curLi)
     }
  const initAdjustableList = ()=>{
           let btns= document.getElementsByTagName('button');
           let ul=document.getElementById('adjustable-list')
           let lis=document.getElementsByTagName('li');
           [...btns].forEach((btn,idx)=>{
               btn.addEventListener('click',(e)=>{
                   let curLi=e.target.parentNode;
                   [...lis].forEach((li,idx)=>{
                        if(li==curLi){
                            if(btn.className=='up'){
                                ul.insertBefore(curLi,lis[idx-1])
                            }else if(btn.className=='down'){
                                let next=lis[idx+1]
                                if(!next){
                                    ul.insertBefore(curLi,lis[0])
                                }else{
                                    ul.insertBefore(next,curLi)
                                }
                            }
                        }
                   });
               })
           });
        }

相关文章

  • 循环调节列表

    点击 UP 按钮会使得该 li 元素在列表中上升一个位置,点击 DOWN 按钮会使得该 li 元素下降一个位置。点...

  • Bash 流程控制之术

    一、循环结构 1.1 for 循环 列表 for 循环: 不带列表的 for 循环: 类似 C 语言风格的 for...

  • Shell基础语法

    判断 分支 循环 循环列表1 循环列表2 循环读文件 循环控制 判断标识 函数传参

  • 列表的遍历与运算

    列表的遍历 列表的遍历一般通过while或for循环实现。 1. 通过while循环遍历列表 通过while循环变...

  • 【Python】04 操作列表

    前言:如何遍历列表,循环 4.1 遍历整个列表:for 循环 输出结果: Tips: 避免缩进错误。for循环后没...

  • 011列表介绍及其操作(增删改查)

    <1>列表的格式 变量A的类型为列表: <2>打印列表 列表的循环遍历 <3>for循环 为了更有效率的输出列表的...

  • python 列表、循环

    列表 循环

  • 5.3 for 语句

    常用语句 列表循环,列表可做切片 字段循环,可打打印字典key值 嵌套 for 循环

  • Python学习基础知识之 列表的介绍以及常见操作

    目录 一、列表的介绍 1.1列表的格式: 1.2打印列表 二、列表的循环遍历 2.1 使用for循环 2.2 使用...

  • 第四章:操作列表

    使用for循环遍历整个列表:类似列表命名,在循环中使用单数和复数式名称来命名单个列表元素和整个列表 创建数值列表:...

网友评论

    本文标题:循环调节列表

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