js學習總結----案例分頁之前端代碼實現和請求處理

来源:http://www.cnblogs.com/diasa-fly/archive/2017/08/04/7285205.html
-Advertisement-
Play Games

index.html detail.html 最終效果圖 ...


index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="css/public.css" charset='utf-8'>
</head>
<body>
    <div class='box'>
        <h2>
            <span>編號</span>
            <span>姓名</span>
            <span>性別</span>
            <span>分數</span>
        </h2>
        <ul class='con' id='content'>
            <li>
                <span>1</span>
                <span>xxx</span>
                <span>男</span>
                <span>90</span>
            </li>
        </ul>
        <div class='page' id='page'>
            <span>FIRST</span>
            <span>PREV</span>
            <ul class='pageNum' id='pageNum'>
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
                <li>5</li>
            </ul>
            <span>NEXT</span>
            <span>LAST</span>
            <input type="text" id='numInp' value='1'/>
        </div>
    </div>
    <script src='js/ajax.js'></script>
    <script>
        var pageModule = (function(){
            //獲取需要操作的DOM元素
            var content = document.getElementById('content'),
                page = document.getElementById('page'),
                pageNum = document.getElementById('pageNum'),
                numInp = document.getElementById('numInp');

            //設定當前也和總頁數及本次請求的數據
            var n = 1,total = 0,data = null;
            //實現頁面數據綁定及其他數據的綁定
            function bindHTML(){
                //content bind
                var str = '';
                for(var i = 0;i<data.length;i++){
                    var curData = data[i];
                    str+='<li studentId="'+curData["id"]+'">';
                        str+='<span>'+curData["id"]+'</span>';
                        str+='<span>'+curData["name"]+'</span>';
                        str+='<span>'+(curData["sex"]==1 ? "女" : "男")+'</span>';
                        str+='<span>'+curData["score"]+'</span>';
                    str+='</li>';
                }
                content.innerHTML = str;
                //page bind
                str = '';
                for(i = 1;i<=total;i++){
                    if(i===n){
                        str+='<li class="bg">'+i+'</li>';
                        continue;
                    }
                    str+='<li>'+i+'</li>';
                }
                pageNum.innerHTML = str;

                //numInp bind
                numInp.value = n;

            }
            //事件委托實現分頁區域的按鈕操作 給文本框enter鍵綁定操作
            function bindEvent(){
                page.onclick = function(e){
                    e = e || window.event;
                    var tar = e.target || e.srcElement
                        tarTag = tar.tagName.toUpperCase(),
                        tarInn = tar.innerHTML;
                    if(tarTag==="SPAN"){
                        if(tarInn==="FIRST"){
                            if(n===1){
                                return;
                            }
                            n = 1;
                        }
                        if(tarInn==="LAST"){
                            if(n === total){
                                return;
                            }
                            n = total;
                        }
                        if(tarInn==="PREV"){
                            if(n === 1){
                                return;
                            }
                            n--;
                        }
                        if(tarInn==="NEXT"){
                            if(n === total){
                                return;
                            }
                            n++;
                        }
                    }

                    if(tarTag==="LI"){
                        if(n === parseFloat(tarInn)){
                            return;
                        }
                        n = parseFloat(tarInn);
                    }

                    //input
                    if(tarTag==="INPUT"){
                        return;
                    }

                    //重新發送請求
                    sendAJAX()

                }

                numInp.onkeyup = function(e){
                    e = e || window.event;
                    if(e.keyCode===13){//enter鍵
                        var val = parseFloat(this.value.replace(/^ +| +$/,''));
                        if(isNaN(val)){
                            this.value = n;
                            return;
                        }
                        val = Math.round(val)
                        if(val<1){
                            n = 1;
                        }else if(val>total){
                            n = total;
                        }else{
                            n = val;
                        }
                        sendAJAX();

                    }
                }
            }
            //content區域的LI跳轉事件
            function bindLink(){
                var oLis = content.getElementsByTagName('li');
                for(var i = 0;i<oLis.length;i++){
                    oLis[i].onclick = function(){
                        // window.location.href = "detail.html";
                        //在跳轉的時候還需要把當前點擊學員得ID傳到詳情頁面
                        window.open("detail.html?id="+this.getAttribute('studentId'));
                        
                    }
                }
            }
            function sendAJAX(){
                ajax({
                    url:"/getList?n="+n,
                    success:function(jsonData){
                        if(jsonData && jsonData.code===0){
                            total = jsonData["total"];
                            data = jsonData['data'];
                            bindHTML();
                            bindLink();
                        }
                    }
                })
            }
            //模塊入口
            function init(){
                sendAJAX();
                bindEvent();
            }

            return {
                init:init
            }
        })()

        pageModule.init();
    </script>
</body>
</html>

detail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="css/public.css" charset='utf-8'>
</head>
<body>
    <ul class='box2' id='box2'>
        <li>
            <span>編號</span>
            <span>4</span>
        </li>
        <li>
            <span>姓名</span>
            <span>xxx</span>
        </li>
        <li>
            <span>性別</span>
            <span>男</span>
        </li>
        <li>
            <span>分數</span>
            <span>99</span>
        </li>
    </ul>
    <script src='js/ajax.js'></script>
    <script>
        String.prototype.queryURLParameter = function(){
            //PARAMETER
            var obj = {},
                reg = /([^?=&#]+)=([^?=&#]+)/g;
            this.replace(reg,function(){
                var key = arguments[1],
                    value = arguments[2];
                obj[key] = value;
            });
             //->HASH
            // reg = /#([^?=&#]+)/;
            // if (reg.test(this)) {
            //     obj['hash'] = reg.exec(this)[1];
            // }
            return obj;
        }
        var detailModuel = (function(){
            var data = null,urlId = window.location.href.queryURLParameter().id,oBox = document.getElementById('box2');
            function bindHTML(){
                var str = "";
                str+="<li><span>編號</span><span>"+data["id"]+"</span></li>";
                str+="<li><span>編號</span><span>"+data["name"]+"</span></li>";
                str+="<li><span>編號</span><span>"+(data["sex"]==1 ? "男" : "女")+"</span></li>";
                str+="<li><span>編號</span><span>"+data["score"]+"</span></li>";
                oBox.innerHTML = str;
            }

            function init(){
                ajax({
                    url:"/getInfo?id="+urlId,
                    success:function(jsonData){
                        if(jsonData && jsonData.code===0){
                            data = jsonData["data"];
                            bindHTML();
                        }
                    }
                })
            }

            return {
                init:init
            }
        })()
        detailModuel.init();
    </script>
</body>
</html>

最終效果圖

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • var uploader = new plupload.Uploader({ runtimes: 'html5,flash,silverlight,html4',//用來指定上傳方式,指定多個上傳方式請使用逗號隔開。 browse_button: 'browse',//觸發文件選擇對話框的按鈕,為那 ...
  • 我們從es5的變數提升開始說起, 由於變數提升的原因, 上述程式, 在第2行和第7行都能訪問到a的值, 只不過是undefined, 如果你不熟悉javascript這種變數的預解釋機制,可能會認為第2行和第7行會報錯, 只有flag為true的時候,變數a才聲明瞭, 其實javascript在詞法 ...
  • 用data屬性實例化swiper,在使用中不斷優化 HTML JavaScript ...
  • css如何實現這樣的樣式: 解決方案: 這裡需要用到的技術是border-image的靈活運用,首先需要一張圖片,這裡我選中的是這樣子的,此後 的圖片可以拿這個更改圓形的顏色以更改鋸齒顏色: 底部透明,正方形,ps截圖如下: 好了,下麵咱們就開始真正的代碼: html: <section class ...
  • svg就相當於字體,如何將生成的svg導入到自己的項目中去呢? 1、將類似下麵的文件放入自己的項目中: 2、生成的svg中有一個style.css文件,將裡面的內容拷貝到你的css中,然後更改上圖的路徑即可: 在你的css文件將上圖中的style.css文件拷貝進去即可,如下圖: 註意路徑哦~ 1、 ...
  • meta基礎知識 meta基礎知識 H5頁面視窗自動調整到設備寬度,並禁止用戶縮放頁面 <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,us ...
  • 一、vertical-align 一)定義:定義行內元素的基線相對於該所在基線的垂直對齊。(只針對行類塊inline/inline-block/<img>,塊級不適用!) 二)語法: 三)某些數值: 四)何為基線呢??關於基線 有這樣的說法: 像不像我們小時候寫的英文字母的線,實在是太TMD像了,對 ...
  • 一直在寫伺服器端,最近在用Netty-NIO編寫聊天。web端用JS實現聊天界面……js用得不多,於是下了一個仿微信的JS Demo。裡面用到了vue.js庫。 殘忍的源碼: 大概600行,但是對於我這個菜鳥來說,過多的了。 代碼裡面沒註釋,名稱寫得也非常亂(單個字母為主,太恐怖了。。。),又沒接觸 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...