javaScript实现滚动新闻的方法


Posted in Javascript onJuly 30, 2015

本文实例讲述了javaScript实现滚动新闻的方法。分享给大家供大家参考。具体如下:

rolling_new.html页面如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <title> New Document </title>
 <meta name="Generator" content="EditPlus">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta name="Author" content="">
 <meta name="Keywords" content="">
 <meta name="Description" content="">
 </head>
 <style type="text/css">
 *{margin:0;padding:0;}
 #news{display:none;}
 </style>
 <body>
 <div id="news">
 太平天国医疗卫生组织,在国家制度上,有一定的组织,已经形成为一
种正规化的制度。它可分为朝内、军中、居民三个系统。
种正规化的制度。它可分为朝内、军中、居民三个系统。
种正规化的制度。它可分为朝内、军中、居民三个系统。
种正规化的制度。它可分为朝内、军中、居民三个系统。种正规化的制度。它可分为朝内、军中、居民三个系统。种正规化的制度。它可分为朝内、军中、居民三个系统。种正规化的制度。它可分为朝内、军中、居民三个系统。种正规化的制度。它可分为朝内、军中、居民三个系统。种正规化的制度。它可分为朝内、军中、居民三个系统。种正规化的制度。它可分为朝内、军中、居民三个系统。
 </div>
 <div id="show_news">
 </div>
 </body>
 <script type="text/javascript">
 function $(node){
  return document.getElementById(node);
 }
 function getElementsByClassName(str,root,tag){
   if(root){
    root=typeof root=="string"?document.getElementById(root):root;
   }else{
    root=document.body;
   }
   tag=tag||"*";
   var els=root.getElementsByTagName(tag),arr=[];
   for(var i=0,n=els.length;i<n;i++){
    for(var j=0,k=els[i].className.split(" "),l=k.length;j<1;j++){
     if(k[j]==str){
      arr.push(els[i]);
      break;
     }
    }
   }
   return arr;
 }
 function attachEvent(node,eventType,handler){
  node=typeof node=="string"?document.getElementById(node):node;
  if(document.all){
   node.attachEvent("on"+eventType,handler);
  }else{
   node.addEventListener(eventType,handler,false);
  }
 }
 function rolling_news(source,target,width,height,speed,direction){
  this.source=$(source);
  this.source_content=$(source).innerHTML;
  this.target=$(target);
  this.width=width;  //宽
  this.height=height;  //高
  this.speed=speed;  //滚动速度
  this.direction=direction;//方向
  this.tag=0;  
 }
 rolling_news.prototype={
  version:"1.00",
  author:"yangfeifei",
  date:"2011-10-23",
  initialize:function(){
   var o=this;
   var target=o.target;
   var content=o.source_content;
   var innerDiv=document.createElement("div");
   innerDiv.setAttribute("class","innerDiv");
   o.source.innerHTML="";
   innerDiv.innerHTML=o.source_content;
   target.appendChild(innerDiv);  
   //显示区域样式
   target.style.width=o.width+"px";
   target.style.height=o.height+"px";
   target.style.overflow="hidden";
   target.getElementsByTagName('div')[0].style.width=o.width+"px";
   target.getElementsByTagName('div')[0].style.height=target.getElementsByTagName('div')[0].scrollHeight>o.height?target.getElementsByTagName('div')[0].scrollHeight+"px":o.height+"px";//当文档实际高度大于容器时,高度为实际文档高度,否则为容器高度
   //显示区域初始化
   switch(o.direction){
    case "up":
    target.scrollTop="0";
    o.addAfterNode();
    break;
    case "down":
    o.addBeforeNode();
    target.scrollTop=target.scrollHeight-o.height;
    break;
   }   
   //初始动作    
   o.autoplay();
   attachEvent(o.target,'mouseover',function(){o.stop()});
   attachEvent(o.target,'mouseout',function(){o.autoplay()});
  },
  up:function(){
   var x=this;
   var divHeight=x.target.getElementsByTagName('div')[0].scrollHeight>x.height?x.target.getElementsByTagName('div')[0].scrollHeight:x.height;
   if((x.target.scrollHeight-x.target.scrollTop)!=x.height){
     x.target.scrollTop=x.tag;
   }else{
    x.addAfterNode();
    x.target.removeChild(x.target.getElementsByTagName('div')[0]);    
    x.tag=x.tag-divHeight;
    x.target.scrollTop=x.tag;     
   }
   x.tag=x.tag+x.speed;
  },
  down:function(){
   var j=this;
   var divHeight=j.target.getElementsByTagName('div')[0].scrollHeight>j.height?j.target.getElementsByTagName('div')[0].scrollHeight:j.height;
   if(j.target.scrollTop==0){
    j.addBeforeNode();
    j.target.removeChild(j.target.getElementsByTagName('div')[2]); 
    j.tag=j.tag-divHeight;
    j.target.scrollTop=j.target.scrollHeight-j.height-j.tag;
   }else{
    j.target.scrollTop=j.target.scrollHeight-j.height-j.tag;
   }
   j.tag=j.tag+j.speed;
  },
  addAfterNode:function(){
   var p=this;
   var newDiv=document.createElement('div');
   newDiv.setAttribute("class","innerDiv");
   newDiv.innerHTML=p.source_content;
   p.target.appendChild(newDiv);
   newDiv.style.width=p.width+"px";
   newDiv.style.height=p.target.getElementsByTagName('div')[0].scrollHeight>p.height?p.target.getElementsByTagName('div')[0].scrollHeight+"px":p.height+"px";//当文档实际高度大于容器时,高度为实际文档高度,否则为容器高度
  },
  addBeforeNode:function(){
   var d=this;
   var newDiv=document.createElement('div');
   newDiv.setAttribute("class","innerDiv");
   newDiv.innerHTML=d.source_content;
   d.target.insertBefore(newDiv,d.target.getElementsByTagName('div')[0]);
   newDiv.style.width=d.width+"px";
   newDiv.style.height=d.target.getElementsByTagName('div')[0].scrollHeight>d.height?d.target.getElementsByTagName('div')[0].scrollHeight+"px":d.height+"px";//当文档实际高度大于容器时,高度为实际文档高度,否则为容器高度
  },
  play:function(){
   var t=this;     
   switch(t.direction){
    //向上
    case "up":
     t.up();
     break;
    //向右
    case "down": 
     t.down();
     break;     
   } 
  },
  autoplay:function(){
   var s=this;
   s.auto=setInterval(function(){s.play()},1);
  },
  stop:function(){
   var h=this;
   clearInterval(h.auto);
  }
 }
 var a=new rolling_news("news","show_news",200,200,1,"down");
 a.initialize();
 </script>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JQuery 选择器、过滤器介绍
Feb 14 Javascript
基于jquery的图片轮播 tab切换组件
Jul 19 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
Apr 17 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
Sep 17 Javascript
使用node.js搭建服务器
May 20 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
最实用的JS数组函数整理
Dec 05 Javascript
vue mounted组件的使用
Jun 18 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
Vue数据绑定实例写法
Aug 06 Javascript
javascript浅层克隆、深度克隆对比及实例解析
Feb 09 Javascript
JavaScript实现简易计算器小功能
Oct 22 Javascript
javascript中递归函数用法注意点
Jul 30 #Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
Jul 30 #Javascript
jQuery代码实现发展历程时间轴特效
Jul 30 #Javascript
使用js复制链接中的部分文字的方法
Jul 30 #Javascript
JS如何实现文本框随文本的长度而增长
Jul 30 #Javascript
js代码实现随机颜色的小方块
Jul 30 #Javascript
js代码验证手机号码和电话号码是否合法
Jul 30 #Javascript
You might like
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
php的4种常见运行方式
2015/03/20 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
iview table render集成switch开关的实例
2018/03/14 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
深入解答关于Python的11道基本面试题
2017/04/01 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
超实用的 30 段 Python 案例
2019/10/10 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
售后主管岗位职责
2013/12/08 职场文书
初中政治教学反思
2014/01/17 职场文书
人事专员职责
2014/02/22 职场文书
文明单位汇报材料
2014/12/24 职场文书
博士给导师的自荐信
2015/03/06 职场文书
小兵张嘎观后感
2015/06/03 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
SSM VUE Axios详解
2021/10/05 Vue.js
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android