写一个可以替换JS 字符串的小Demo

<!DOCTYPE html>
<html>
<head>
    <title>测试</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet">
    <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
    <!-- MAP start  -->
    <script>
        function UtilMap() {
            var struct = function (key, value) {
                this.key = key;
                this.value = value;
            };

            var put = function (key, value) {
                for (var i = 0; i < this.arr.length; i++) {
                    if (this.arr[i].key === key) {
                        this.arr[i].value = value;
                        return;
                    }
                }
                this.arr[this.arr.length] = new struct(key, value);
            };

            var get = function (key) {
                for (var i = 0; i < this.arr.length; i++) {
                    if (this.arr[i].key === key) {
                        return this.arr[i].value;
                    }
                }
                return null;
            };
            var getKey = function (index) {
                if (index > -1 && index < this.arr.length) {
                    return this.arr[index].key;
                }
                return null;
            };
            var remove = function (key) {
                var v;
                for (var i = 0; i < this.arr.length; i++) {
                    v = this.arr.pop();
                    if (v.key === key) {
                        continue;
                    }
                    this.arr.unshift(v);
                }
            };

            var size = function () {
                return this.arr.length;
            };

            var isEmpty = function () {
                return this.arr.length <= 0;
            };
            this.arr = new Array();
            this.get = get;
            this.getKey = getKey;
            this.put = put;
            this.remove = remove;
            this.size = size;
            this.isEmpty = isEmpty;
        }

    </script>
    <!-- MAP end  -->
    <script>

        function pagingStart(InsertID, ModelId, ActionName) {
            paging(InsertID, ModelId, ActionName,1)

        }

        function paging(InsertID, ModelId, ActionName,PageNo) {
            console.log("AJAX 发送请求 " + ActionName+ "  PageNo = "+ PageNo)
            console.log("获取totelNumber---获取PageSize---获取PageNumber")
            var json = ' { "programmers": [{ "firstName": "1", "lastName":"11", "email": "111" },' +
                    '{ "firstName": "2", "lastName":"22", "email": "222" },' +
                    '{ "firstName": "3", "lastName":"33", "email": "333" },' +
                    '{ "firstName": "4", "lastName":"44", "email": "444" },' +
                    '{ "firstName": "5", "lastName":"55", "email": "555" },' +
                    '{ "firstName": "6", "lastName":"66", "email": "666" },' +
                    '{ "firstName": "7", "lastName":"77", "email": "777" },' +
                    '{ "firstName": "8", "lastName":"88", "email": "888" },' +
                    '{ "firstName": "9", "lastName":"99", "email": "999" },' +
                    '{ "firstName": "0", "lastName":"00", "email": "000" },' +
                    ' ]} ';
            json = eval("(" + json + ")");
            var totelNumber = 27;
            var PageSize = 5;
            var PageNo = PageNo;
            if(totelNumber==0){

                $(InsertID).append("没有更多数据了");

                return;

            }
            // 获取数据完成 end 

            // 加载页面 ----   加载数据   加载分页

            // 1. 加载数据

            console.log("加载页面");
            var model_html = $(ModelId).html();
            var map = new UtilMap();

            var patt = new RegExp(/[@]{3}\w+[@]{1}/,"gmi");
            var result;
            while ((result = patt.exec(model_html)) != null)  {
                result = result.toString().replace(/([@]{3})(\w+)([@]{1})/, "$2");
                console.log(result+"----");
                map.put("@@@"+result+"@",result);
                console.log(map.arr)
            }
                     // 进行循环打印
                    $(InsertID).children().remove();
                    for (var i = 0; i < PageSize; i++) {
                        var my_json = json.programmers[i];
                        var linshiModelHtml = model_html;
                        for (var j = 0; j < map.size(); j++) {
                            linshiModelHtml = (linshiModelHtml.replace(map.getKey(j), my_json[map.get(map.getKey(j))])).toString();

                            // console.log(map.getKey(j) + "   " + map.get(map.getKey(j)));
                            // console.log("linshiModelHtml :" + linshiModelHtml);
                        }

                        $(InsertID).append(linshiModelHtml);

                    }

            // 2 加载 分页信息

            console.log(Math.ceil(totelNumber/PageSize));

            var html = getPagingHtmlString(InsertID, ModelId,ActionName,Math.ceil(totelNumber/PageSize),PageNo)

            $(InsertID).append(html);

        }


        // 总页数  当前页数  之前的页数
        function getPagingHtmlString(InsertID, ModelId,ActionName,PageNumber,PageNo) {

            var html_head = '';
            var html_body = '';
            var html_foot = '';
            var PAGESIZE = 5;
            var position = PageNo % PAGESIZE;
            position == 0 ? position = PAGESIZE : position = position ;

            for(var i = 0; i < PAGESIZE; i++){
                var number = PageNo+(1 - position + i);
                if (number > PageNumber){
                    html_body += '<li class="disabled" ><a>&nbsp&nbsp</a></li>';
                }else{
                    if((1 - position + i) == 0){
                        html_body += '<li class="active"><a>'+ number +'</a></li>';
                    }else{
                        html_body += (
                            '<li><a href="javascript:paging(\''+InsertID+'\',\''+ModelId+'\',\''+ActionName+'\','+number+')">'+ number +'</a></li>');
                    }                   
                }               
            }
            if((PageNo-position)<=0){
                html_head = '<nav><ul class="pagination"><li class="disabled" ><a >Prev</a></li>' ;
            }else{
                html_head = '<nav><ul class="pagination"><li><a href="javascript:paging(\''+InsertID+'\',\''+ModelId+'\',\''+ActionName+'\','+(PageNo-position)+')">Prev</a></li>' ;
            }

            if((PageNo-position+PAGESIZE+1)>PageNumber){
                html_foot = '<li class="disabled" ><a >Next</a></li></ul></nav>';
            }else{
                html_foot = '<li><a href="javascript:paging(\''+InsertID+'\',\''+ModelId+'\',\''+ActionName+'\','+(PageNo-position+PAGESIZE+1)+')">Next</a></li></ul></nav>';

            }
            return html_head+html_body+html_foot;

        }

    </script>






</head>
<body  onload="pagingStart('#pagingId','#model_id','1')">

<div id="model_id" >

    <div class="panel panel-default">

        <div class="panel-heading">@@@firstName@</div>

        <div class="panel-body">
            @@@lastName@
        </div>
    </div>
</div>
<div id="Insert_id">
</div>

<!-- 分页方法 -->


<div id="pagingId" class="container">
    11111111rere
</div>

<script src="http://cdn.bootcss.com/bootstrap/2.3.2/js/bootstrap.min.js"></script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容