javascript之循环停顿上下滚动

时间:2024-11-19 19:02:57 

extractNodes函数解决各浏览器的节点计算问题。FireFox把换行符也算成一个节点,很不合理啊。
先用appendChild复制前面的四个节点到底部,使得头尾是一样的内容,以作后用。记得做flash补间循环运动的时候就是这样要头尾一样。
通过setInterval隔时运行rolltxt函数。
rolltxt函数首先计算的是间隔停顿的高度,滚动多高就要停顿一下,这个高度我也不知道怎么算出来的,跟CSS有关系,我是试出来的  
用求余数的方法可以判断是否已经滚过了所设的间隔高度。如果余数不等于0就继续加1滚动。如果余数为0说明已经滚动了所设的间隔高度,要在这里停顿了。
设一个变量settime来计算时间,加到50的时候settime清零,滚动继续,这个50我没算过单位是什么,反正随我高兴。
差不到这样已经能停顿滚动了,但是还有一个问题,没有限定最高值,滚动一直滚啊滚啊,当然是会出毛病了。滚到哪再重头开始滚好呢?当然是滚到尾部跟头一样位置的时候,网页高度减去可见高度就对了,为什么这么算?这个自己比划比划就知道了。
循环停顿上下滚动已经大功告成了,不信你试试 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>循环停顿上下滚动</title> <style type="text/css"> #block2{height:23px;width:500px;border:#ccc 1px solid;font-size:12px;text-align:center;} #block2 ul{list-style:outside none none;height:17px;padding:3px 0;overflow:hidden;margin:0;} #block2 ul li{float:left;display:inline;margin:2px 0;height:14px;width:24.9%;} #block2 ul li a{text-decoration:none;} </style> </head> <body> <div id="block2">   <ul id="rolltxt">     <li>asp之家1</li>     <li>asp之家2</li>     <li>asp之家3</li>     <li>asp之家4</li>     <li>asp之家5</li>     <li>asp之家6</li>     <li>asp之家7</li>     <li>asp之家8</li>     <li>asp之家9</li>     <li>asp之家10</li>     <li>asp之家11</li>     <li>asp之家12</li>     <li>asp之家13</li>     <li>asp之家14</li>     <li>asp之家15</li>     <li>asp之家16</li>   </ul> <script type="text/javascript">  function extractNodes(pNode){     if(pNode.nodeType == 3)return null;     var node,nodes = new Array();     for(var i=0;node= pNode.childNodes[i];i++){         if(node.nodeType == 1)nodes.push(node);     }     return nodes; } var obj=document.getElementById("rolltxt"); for(i=0;i<4;i++){     obj.appendChild(extractNodes(obj)[i].cloneNode(true)); } settime=0; var t=setInterval(rolltxt,50); function rolltxt(){     if(obj.scrollTop % (obj.clientHeight-5) ==0){         settime+=1;         if(settime==50){             obj.scrollTop+=1;             settime=0;         }     }else{         obj.scrollTop+=1;         if(obj.scrollTop==(obj.scrollHeight-obj.clientHeight)){             obj.scrollTop=0;         }     } } obj.onmouseover=function(){clearInterval(t)} obj.onmouseout=function(){t=setInterval(rolltxt,50)} </script> </div> </body> </html>
标签:javascript之循环停顿上下滚动
0
投稿

猜你喜欢

  • OpenCV图像识别之姿态估计Pose Estimation学习

    2023-08-10 14:25:28
  • JavaScript基于setTimeout实现计数的方法

    2024-04-16 09:49:53
  • numpy增加维度、删除维度的方法

    2023-12-07 22:29:01
  • sqlserver存储过程中SELECT 与 SET 对变量赋值的区别

    2024-01-14 09:50:26
  • Bootstrap进度条与AJAX后端数据传递结合使用实例详解

    2024-04-28 10:18:32
  • Mysql最新版8.0.21下载安装配置教程详解

    2024-01-21 23:58:17
  • VUE前端cookie简单操作

    2024-04-30 08:44:57
  • Python监听键盘和鼠标事件的示例代码

    2022-06-14 07:05:23
  • php让json_encode不自动转义斜杠“/”的方法

    2023-08-19 17:04:28
  • 在ASP中用FormatDateTime格式化日期

    2010-08-08 19:16:00
  • 最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程

    2022-09-24 01:38:47
  • SQL查询入门(中篇)

    2011-09-30 11:15:09
  • centos 下面安装python2.7 +pip +mysqld

    2024-01-22 15:10:43
  • Python 模拟购物车的实例讲解

    2021-01-13 05:24:08
  • django框架自定义模板标签(template tag)操作示例

    2023-11-06 16:05:59
  • 如何用Python来搭建一个简单的推荐系统

    2022-07-20 22:17:33
  • python自动提取文本中的时间(包含中文日期)

    2023-08-22 21:32:11
  • 通过sql语句将blob里的char取出来转成数字保存在其它字段

    2024-01-20 10:49:05
  • Oracle数据加载和卸载的实现方法

    2024-01-27 20:19:08
  • golang中如何保证精度的方法

    2024-04-26 17:23:22
  • asp之家 网络编程 m.aspxhome.com