蓝桥杯web【真题练习】课程列表--分页

课程列表

介绍

分页是前端页面中必不可少的一项功能,下面让我们一起来完成一个课程列表的分页吧。

目标

  1. 完成数据请求(数据来源 js/carlist.json)。在项目目录下已经提供了 axios,考生可自行选择是否使用。
  2. 完成数据分页显示,每页 5 条数据,默认当前页码为第一页(即 pageNum = 1 ),按照顺序第一页显示 1-5 条,第二页显示 6-10 条,依此类推。将每条数据显示到 list-group 元素中。使用已有代码中 list-group,不要修改 list-group 元素的 DOM 结构。动态渲染时,list-group 示例代码可删除。
  3. 当页码为第一页时,上一页为禁用状态(class=disabled),点击无任何变化。
  4. 当页码为最后一页时,下一页为禁用状态(class=disabled),点击无任何变化。
  5. 在 id 为 pagination 元素中正确显示当前页码总页码(即最大页码)。当前页码变量使用 pageNum,总页码变量使用 maxPage。请勿修改当前页码总页码的变量名称,以免造成判题无法通过。

 代码答案

let pageNum = 1; // 当前页码,默认页码1
let maxPage; // 最大页数

// TODO:待补充代码
// 显示当前页码
function showPagination(maxPage,pageNum){
  //字符串中嵌入变量用 `      ` 这用${} 括号里的内容才能显示出来
  document.querySelector('#pagination').innerHTML = `共${maxPage}页,当前${pageNum}页`
}

function getPageData(data){
  return data.slice((pageNum - 1)*5,pageNum*5)
}
// toFixed(num)   方法可把 Number 四舍五入为指定小数位数的数字,num 为保留小数点的位数

// 渲染每页数据
function renderHtml(pageData){
  document.querySelector('#list').innerHTML = pageData.map(item =>`
  <!-- list-group 起始位置  list-group为示例代码,动态渲染时可删除-->
      <div class="list-group">
        <a href="#" class="list-group-item list-group-item-action">
          <div class="d-flex w-100 justify-content-between">
            <h5 class="mb-1">${item.name}</h5>
            <small>${(item.price / 100).toFixed(2)}元</small>
            
          </div>
          <p class="mb-1">
            ${item.description}
          </p>
        </a>
      </div>
      <!-- list-group 结束位置 -->
  `).join(``)
}
let data  //总数据
let pageData //每页数据


axios.get('./js/carlist.json')
.then(res=>{
  data = res.data;//把获得的carlist.json里 是数据(res.data)赋给总数据data
  console.log(data);
  maxPage = Math.ceil(data.length / 5);//ceil 向上取整
  console.log(maxPage,pageNum);
// 显示当前页码
  showPagination(maxPage,pageNum)
  // 得到每页数据
  pageData = getPageData(data)
  console.log(pageData)
  //渲染每页代码
  renderHtml(pageData)
})


// 点击上一页
let prev = document.getElementById("prev");
prev.onclick = function () {
  // TODO:待补充代码
  next.classList.remove('disabled')
  pageNum--
  console.log(pageNum)
  if(pageNum <= 1){
    this.classList.add('disabled')
    pageNum = 1
  }

  // 显示当前页码
  showPagination(maxPage,pageNum)
  // 得到每页数据
  pageData = getPageData(data)
  console.log(pageData)
  //渲染每页代码
  renderHtml(pageData)
};

// 点击下一页
let next = document.getElementById("next");
next.onclick = function () {
  // TODO:待补充代码

  prev.classList.remove('disabled')
  pageNum++
  console.log(pageNum)
  if(pageNum >= maxPage){
    this.classList.add('disabled')
    pageNum = maxPage

  }

  // 显示当前页码
  showPagination(maxPage,pageNum)
  // 得到每页数据
  pageData = getPageData(data)
  console.log(pageData)
  //渲染每页代码
  renderHtml(pageData)
};

知识点

  • 从前端请求后端接口获取数据格式:

        GET方法:
                1、axios.get(url,config).then(res=>{数据处理逻辑}).catch(err=>{错误处理逻辑})

                2、axios({method:'get',url:'xxxxx',config}).then(res=>{数据处理逻辑}).catch(err=>{错误处理逻辑})

                可以在config中设置基础URL,超时时间、传参方式、请求头等信息,但是传参方式一般为params,请求参数在url中。

  • 原生js——操作类名(HTML5新增classList)

classList.add( newClassName );
添加新的类名,如已经存在,取消添加

classList.contains( oldClassName );
确定元素中是否包含指定的类名,返回值为true 、false;

classList.remove( oldClassName );
移除已经存在的类名;

classList.toggle( className );
如果classList中存在给定的值,删除它,否则,添加它;

classList.replace( oldClassName,newClassName );
类名替换

  • 字符串中嵌入变量用 `      ` 这用${} 括号里的内容才能显示出来

  •  toFixed(num)   方法可把 Number 四舍五入为指定小数位数的数字,num 为保留小数点的位数

  • 取整函数主要有三种:ceil()、floor()、round()

1、Math.round()

功能:四舍五入取整。

语法:Math.round(x)

参数:

         x:一个浮点数

返回值:与x最接近的整数。

注:当出现两个最接近的整数,将返回最大的那个整数。

2、Math.floor()

功能:对一个数进行下取整。

  1. Math.floor(1.5);//1

  2. Math.floor(1.7);//1

3、Math.ceil()

功能:对一个数进行上取整。

  1. Math.ceil(1.3);//2

  2. Math.ceil(1.5);//2

  3. Math.ceil(1.7);//2

 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值