博主信息
博文 32
粉丝 0
评论 0
访问量 28331
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
07-29 作业:完成分页中的前一页和下一页的功能显示
Yx的博客
原创
865人浏览过

根据老师上课代码改的,所以只贴出了show.php代码部分:

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>最新影视剧介绍</title>
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }

        th, td {
            border: 1px solid black;
        }

        thead > tr{
            background-color: lightblue;
        }

        ul, li {
            padding: 0;
            margin: 5px auto;
            list-style: none;
            text-align: center;
            overflow: hidden;
        }

        li {
            display: inline-block;
            width: 30px;
            height: 20px;
            border: 1px solid black;
            margin-left: 3px;
        }

        li:hover {
            background-color: lightblue;
            cursor: pointer;
        }

        /*设置当前页高亮样式*/
        .active {
            background-color: lightblue;

        }
    </style>
</head>
<body>
<table>
    <caption>最新影视剧介绍</caption>
    <thead>
    <tr>
        <th>序号</th>
        <th>片名</th>
        <th>简介</th>
    </tr>
    </thead>
    <tbody id>
    <!--    这里显示影视信息列表-->
    </tbody>
</table>


<ul>

</ul>



</body>
</html>


<script>


    // 获取表格显示区
    var tbody = document.getElementsByTagName('tbody').item(0);

    // 获取页码显示区
    var ul = document.getElementsByTagName('ul').item(0);

    var pages='';

    // 当前页码: 默认显示第一页
    var p = <?=$_GET['p'] ?? 1?>;
    // 创建 Ajax对象
    var request = new XMLHttpRequest();

    // 监听文档的load事件,在页面加载完成后通过Ajax方式获取数据
    window.addEventListener('load', showData(), false);

    // load事件方法
    function showData() {
        // 监听Ajax成功回调
        request.addEventListener('readystatechange', getData, false);
        // 配置请求
        request.open('GET', 'get_movies.php?p='+p, true);
        // 发送请求
        request.send(null);
    }

    function getData() {
        if (request.readyState === 4) {
            // console.log(request.responseText);

            // 1. 获取Ajax返回的数据并解析为JavaScript变量
            var obj = JSON.parse(request.responseText);

            pages = obj['pages'];
            var movies = obj['movies'];

            // 2. 生成表格数据
            var str = '';
            movies.forEach(function (movie) {
                str += '<tr>';
                str += '<td>' + movie['mov_id']+ '</td>';
                str += '<td>' + movie.name+ '</td>';
                str += '<td>' + movie.detail+ '</td>';
                str += '</tr>';
            });
            // 将数据添加到表格中
            tbody.innerHTML = str;

            // 性能优化建议: 使用文档片段统一添加,以减少DOM操作,提升渲染效率
            /*
            var frag = document.createDocumentFragment();
            movies.forEach(function (movie) {
                var tr = document.createElement('tr');
                for (var key in movie) {
                    var td = document.createElement('td');
                    td.innerHTML = movie[key];
                    tr.appendChild(td);
                }
                frag.appendChild(tr);
            });
            tbody.appendChild(frag);
            */

            ul.innerHTML+="<li id='prev'>«</li>";

            // 3. 生成页码
            for (var i = 1; i <= pages; i++) {
                // 设置当前页码是否高亮?
                var active = (i === p) ? 'active' : '';
                ul.innerHTML += '<li class="'+ active  +'">' + i + '</li>';

                // 供参考的,规范的DOM语法
                /*
                var li = document.createElement('li');
                li.appendChild(document.createTextNode(i.toString()));
                if (p === i)  li.classList.add('active');
                ul.appendChild(li);
                 */
            }

            ul.innerHTML+="<li id='next'>»</li>";

        }
    }


    // 给页码添加点击事件
    ul.addEventListener('click', set_page, false);

    function set_page(ev) {
        if(ev.target.id==='prev'&&p>1){
            p=p-1;
        }
        if(ev.target.id==='next'&&p<pages){
            p=p+1;
        }
        if(ev.target.id===""){
            p=ev.target.innerText;
        }
        location.search = '?p=' +p;

    }

</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例


批改状态:合格

老师批语:把课堂代码全部复制上来, 连注释也不删除原样照搬, 这样不行, 要有自己的想法
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学