使用js正则表达式分割内容分别显示

目的:一段文字使用特殊字符表示图片,达到文字和图片嵌套显示的效果

假设后台服务器得到
{‘titile’:’标题’,
‘content’:’内容’,
‘last_update_date’:’2016-04-08 21:33’,
‘pic1’:’img1’}

  • 将content通过pattern正则,content.split(pattern),将其分成数组contentArr
  • 使用content.match(pattern)得到图片标特殊符号的数组
  • 使用for循环遍历出来
  • 使用js动态创建p(显示内容)、img(显示图片)标签

JS代码:

<script>
 window.onload=function(){
     var id = document.getElementById('getId');
     var content=id.innerHTML;
     var pattern=/@img\d+;\s/ig;
     var contentArr = content.split(pattern);
     var patternArr = content.match(pattern);
     for(var i=0;i<contentArr.length;i++){
         var p = document.createElement('p');
         var oDiv = document.getElementById('box');
         oDiv.appendChild(p);
         var contentText = document.createTextNode(contentArr[i]);
         p.appendChild(contentText);
         if((contentArr.length-i-1)!=0){
             var img = document.createElement('img');
             oDiv.appendChild(img);
             switch(patternArr[i][4])
             {
                 case '0':
                     img.src = document.getElementById('pic').innerHTML;
                     break;
                     img.src = document.getElementById('pic1').innerHTML;
                     break;
                 case '2':
                     img.src = document.getElementById('pic2').innerHTML;
                     break;
                 case '3':
                     img.src = document.getElementById('pic3').innerHTML;
                     break;
                 case '4':
                     img.src = document.getElementById('pic4').innerHTML;
                     break;
                 case '5':
                     img.src = document.getElementById('pic5').innerHTML;
                     break;
             }

         }
     }
 }
    </script>

控制台展现效果:

查看控制台效果

数据库字段:

create table td_news(
    news_id bigint(20) primary key
    title   varchar(100)        //标题
    subtitle    varchar(100)//副标题
    content varchar(18000)      //内容
    last_update_date datetime   //发表时间
    pic varchar(250)        //标题图片
    pic1    varchar(250)        //图片1
    pic2    varchar(250)        //图片2
    pic3    varchar(250)        //图片3
    pic4    varchar(250)
    pic5    varchar(250)
);

html代码:

注:newsInstance是从数据库取出td_news数据

<div class="page_content">
    <div class="container">
        <div class="p_t bg_white">
            <div class="page_title text-center">
                <div class="big_title"><h1>标题:${newsInstance.title}</h1></div>
                <div class="page_time text_gray">发表时间:${newsInstance.lastUpdated}</div>
            </div>
            <div class="l_title"><h4>副标题:${newsInstance.subtitle}</h4></div>
            <div class="p_c">
                <div id="box"></div>
                <div id="getId" hidden="hidden">${newsInstance.content}</div>
                <div id="pic1" hidden="hidden">${newsInstance.pic1}</div>
                <div id="pic2" hidden="hidden">${newsInstance.pic2}</div>
                <div id="pic3" hidden="hidden">${newsInstance.pic3}</div>
                <div id="pic4" hidden="hidden">${newsInstance.pic4}</div>
                <div id="pic5" hidden="hidden">${newsInstance.pic5}</div>
                <div id="pic" hidden="hidden">${newsInstance.pic}</div>
            </div>
        </div>

    </div>
</div>

CSS代码:

.page_content{
    margin: 0;
    padding: 0;
    width: 100%;
    min-height: 95vh;
    background: #F6F6F6;
}
.bg_white{
    background: #ffffff;
}
.text_gray{
    color: #666;
}
.p_t{
    margin-top: 50px;
    padding: 30px;
}
.page_title{
    border-bottom: 1px #666 dashed;
    margin: 20px 0;
}
.page_time{
    margin: 20px 0;
}
.l_title,
.p_c{
    margin: 20px;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值