js实现数据流(日志流,报警信息等)滚动展示,并分页(含实现demo)
来源:互联网 发布:2017网络统考报名时间 编辑:程序博客网 时间:2024/06/05 03:10
在项目中有遇到,后台向前端推送数据,前端以数据流的形式展示,即来一条我增加一条,类似于日志,报警等信息展示,想必大部分人都有遇到过,本来出于想找一个好的展示方式的心态,因为感觉自己设计的不太好看,结果一搜下来,发现没有这方面的内容。于是,便随手写下这个demo。样式的话大概需要一个UI修改了,不过内在的方法是适用于样式的,所以你不必担心。
首先是兼容性的问题:基本上可以兼容一切浏览器,那么除了事件方式可能需要兼容一下IE,其实很简单,只需要换为attachEvent即可。
其次,只要是数据流都可通过本方法进行展示,或变通展示。分页的代码也可依据项目进行不同的修改,比如实时数据流(已写),已存在数据,那么就需要先展示已有数据,再对实时信息进行展示。its easy。
最后,不多说,直接上代码:
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>滚动分页</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css"> <style type="text/css"> #dataContent { padding: 10px 40px; height: 18px; color: #977d7d; font-size: 18px; background-color: #c5d8da; border: 1px solid #f2baba; border-radius: 10px; width: 40%; transition: height .3s;} #dataContent p{ line-height: 30px; border-bottom: 1px solid #c6f27a; text-align: center;} input { margin-top: 40px; padding: 5px 14px; border: 1px solid #ccc; border-radius: 5px; background-color: #def2e0; cursor: pointer; } input:hover { background-color: #efbfbf; } input:focus { outline: none; } #pageBar { display: none; } #pageBar li { display: inline; } #pageBar li a { text-decoration: none; position: relative; float: left; padding: 6px 12px; color: blue; background: #fff; border: 1px solid #ccc; margin-left: -1px; } a:active { outline: none; } #pageBar li a:hover { color: blue; background-color: #ccc; border-color: #ccc; } #pageBar li a:focus { color: #ffffff; background-color: #79a3ff; border-color: #79a3ff; cursor: default; } #pageBar li.aFocus a,#pageBar li.aFocus a:focus { color: #ffffff; background-color: #79a3ff; border-color: #79a3ff; cursor: default; z-index: 2; } #pageBar>ul>li:first-child>a { margin-left: 0px; border-bottom-left-radius: 4px; border-top-left-radius: 4px; } #pageBar>ul>li:last-child>a { margin-right: 0px; border-bottom-right-radius: 4px; border-top-right-radius: 4px; } #pageBar li.disabled a { cursor: not-allowed; color: blue; background: #e8e8e8; border: 1px solid #ccc; } #pageBar li.disabled a:focus,#pageBar li.disabled a:hover { color: blue; background: #e8e8e8; border: 1px solid #ccc; } </style></head><body> <div id="dataContent"></div> <div id="pageBar"> <ul></ul> <input type="hidden" name="allPages" value="57" id="allPages"> <input type="hidden" name="currentPage" value="1" id="currentPage"> <input type="hidden" name="pageCount" value="7" id="pageCount"> </div> <input type="button" name="" id="addData" value="增加一条"> <input type="button" name="" id="pageTest" value="分页测试"> <p>使用方法:点击增加一条,在项目中相当于,后台向你发送了一条数据。一直增加,直到达到分页的条件,这里是十条。然后出现分页条。</p> <p>增加和分页测试请单独使用。</p> <p>分页数据是在页面切换时进行修改。下面有注释。(我这里没有展示,相信他对你来说也很简单)</p> <p>分页测试,只是为了检测可用性,并不需要。</p> <p>这是一个demo,你要应用在你的项目中,需要根据情况改变。</p> <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script><script type="text/javascript"> (function(){ var a, d, i=0, ad; //its your data d = '《为你我受冷风吹》,为你我受冷风吹 寂寞时候流眼泪,有人问我是与非 说是与非,可是谁又真的关心谁,若是爱已不可为,明白说吧 无所谓,不必给我安慰 何必怕我伤悲,就当我从此收起真情 谁也不给,我会试着放下往事,管他过去有多美,也会试着不去想起,你如何用爱将我包围,那深情的滋味,但愿我会就此放下往事,忘了过去有多美,不盼缘尽仍留慈悲,虽然我曾经这样以为,我真的这样以为'; a = d.split(','); ad = document.getElementById('addData'); //if IE, you need attachEvent ad.addEventListener('click', function(event){ if(i < a.length && i < 10){ var p, dc; dc = document.getElementById('dataContent'); dc.style.height = dc.offsetHeight - 22 + 49 + 'px'; p = document.createElement('p'); p.innerText = a[i]; p.className = 'animated fadeInDown'; dc.insertBefore(p, dc.firstChild); ++i; }else if(i < a.length){ if($('#pageBar').css('display') == 'none'){ pb = document.getElementById('pageBar'); //i have only two page; document.getElementById('allPages').value = 2; // its show your the effect, usual we cant do like that; document.getElementById('pageCount').value = 1; loadPage(); pb.style.display = 'block'; } var dc, p; dc = document.getElementById('dataContent'); p = document.createElement('p'); p.innerText = a[i]; p.className = 'animated fadeInDown'; dc.insertBefore(p, dc.firstChild); ++i; dc.lastChild.className = 'animated fadeOutDown'; setTimeout(function(){ dc.removeChild(dc.lastChild); },350); }else{ alert('没有数据了'); } },false); $('#pageBar').on('click', 'a', function(event){ var t = event.target; switch(t.parentNode.className){ case 'page'://获取your data for page $('.aFocus').removeClass('aFocus'); t.parentNode.className += ' aFocus'; break; case 'firstPage': document.getElementById('currentPage').value = 1; loadPage(); break; case 'prePage': document.getElementById('currentPage').value = Number(document.getElementById('currentPage').value) - 1; loadPage(); break; case 'nextPage': var a, pc, c; a = Number(document.getElementById('allPages').value); pc = Number(document.getElementById('pageCount').value); c = Number(document.getElementById('currentPage').value); if(c*pc < a){ document.getElementById('currentPage').value = c +1; loadPage(); }else{ loadPage(); } break; case 'lastPage': document.getElementById('currentPage').value = Math.ceil(Number(document.getElementById('allPages').value)/Number(document.getElementById('pageCount').value)); loadPage(); break; } }); function loadPage(){ var pb, a, c, pc, f, p, n, l, i, ca, u, ipc; u = $('#pageBar').find('ul'); u.empty(); a = Number(document.getElementById('allPages').value); pc = Number(document.getElementById('pageCount').value); c = Number(document.getElementById('currentPage').value); ipc = c*pc <= a ? c*pc : a; f = c==1 ? $('<li class="firstPage disabled"></li>').append('<a href="javascript:;">首页</a>') : $('<li class="firstPage"></li>').append('<a href="javascript:;">首页</a>'); p = c==1 ? $('<li class="prePage disabled"></li>').append('<a href="javascript:;">上一页</a>') : $('<li class="prePage"></li>').append('<a href="javascript:;">上一页</a>'); n = c*pc >= a ? $('<li class="nextPage disabled"></li>').append('<a href="javascript:;">下一页</a>') : $('<li class="nextPage"></li>').append('<a href="javascript:;">下一页</a>'); l = c*pc >= a ? $('<li class="lastPage disabled"></li>').append('<a href="javascript:;">末页</a>') : $('<li class="lastPage"></li>').append('<a href="javascript:;">末页</a>'); u.append(f); u.append(p); for(i = (c-1) * pc; i < ipc; i++){ ca = i==(c-1)*pc ? $('<li class="page aFocus"></li>').append('<a href="javascript:;">' + (i+1) + '</a>') : $('<li class="page"></li>').append('<a href="javascript:;">' + (i+1) + '</a>'); u.append(ca); } u.append(n); u.append(l); } var p = document.getElementById('pageTest'); p.addEventListener('click', function(){ if($('#pageBar').css('display') == 'none'){ pb = document.getElementById('pageBar'); loadPage(); pb.style.display = 'block'; }else{ alert('分页插件已经存在了!'); } },false); })();</script></body></html>
你看到这里,首先非常感谢!如果你有什么问题或者疑问,可以随时评论留言,我会尽我所能为你解答。
另外,我想说,现在抄袭真的太严重了!刚发的东西都能原封不动的被拿走,而且自己的还找不到,哭ing。希望各位兄弟姐妹们觉得可以,或者对你有帮助的话就点赞吧TT!
你们可以随便在各种地方使用,不过若要发布在网上或者转载的话请注上原文地址:
作者:铁柱成针
原文地址:http://www.cnblogs.com/zgh-blog/p/jsDataStreamShown.html
阅读全文
1 0
- js实现数据流(日志流,报警信息等)滚动展示,并分页(含实现demo)
- 信息滚动(marquee+JS实现)
- 信息滚动(marquee+JS实现)
- JS实现可左右滚动产品图片展示
- JS实现信息滚动制作
- c++实现日志系统(含源码)
- JS 身份证验证地区等信息(想法待实现)
- 前端报警信息的实现
- CSS+JS实现图片集展示(续)
- CSS+JS实现图片集展示(二)
- js实现五子棋(含AI)
- 利用AsyncUdpSocket实现局域网下的IM(含Demo)
- 利用AsyncUdpSocket实现局域网下的IM(含Demo)
- Unity- 实现 Building Plugins for iOS(含Demo)
- js实现信息滚动的效果
- web复习(三):js实现公告栏效果,间歇性滚动展示
- js实现图片向上连续滚动特效代码(含注释)
- JS上下滚动(含停歇)
- String、StringBuffer、与StringBuilder的区别
- Dubbo+Zookeeper(rest)
- jsp标签和el表达式
- 安卓学习历程-第四天
- Bitmap和Base64的相互转换
- js实现数据流(日志流,报警信息等)滚动展示,并分页(含实现demo)
- linux(ubuntu)跳板机连接和文件传输
- 使用Wercker进行持续构建与发布
- 数据向:618价格到底~到底是不是最低?
- 数据库分库分表(sharding)(一) 拆分实施策略和示例演示
- intellij idea foreach快捷键
- 计蒜客 15967 Windows 画图 题解
- 【笔记一】【1A课程】android开发-初识view
- kotlin基础