var stop=box.scrollTop%18==0&&!can;  这里  直接 var stop=!can;直接这样不就行了吗?
setTimeout(arguments.callee,box.scrollTop%18?fq:w);   //这里为什么要用到公式来作为毫秒啊?是怎么计算的?<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title> code.js.cn </title>
<style>
a{display:block;font-size:15px;line-height:18px;text-decoration:none;color:#333;font-family:Arial;font-size:12px;}
.shell{
background:url(http://bbs.blueidea.com/images/common/xml.gif) no-repeat 4px 5px;
border:1px solid #aaa; 
width:400px;
padding:3px 2px 2px 20px; 
}
.core{
height:68px;
overflow:hidden;
overflow-y:auto;
}
</style>
</head>
<body>
<div class="shell">
<div id="div1" class="core">
  <a href="javascript:">请教高手帮我看下这段代码 FLASH显示不了</a>
  <a href="javascript:">请教在UTF-8编辑下的符号显示问题 </a>
  <a href="javascript:">jquery做的一个滑动效果,不知如何增加延迟,现在太灵敏了</a>
  <a href="javascript:">技术研究-QQ09版按钮渐显渐隐的由来 </a>
  <a href="javascript:">javascript读取Json数据并分页显示,支持键盘和滚轮翻页 </a>
  <a href="javascript:">腾讯网奇怪的PNG文件,拜师以求解惑</a>
  <a href="javascript:">更新lhgdialog-ver2.0.1弹出窗口组件 2009-7-18 </a>
</div> 
</div>
</body>
<script>
function myGod(id,w,n){
var box=document.getElementById(id),can=true,w=w||1500,fq=fq||10,n=n==-1?-1:1;
box.innerHTML+=box.innerHTML;
box.onmouseover=function(){can=false};
box.onmouseout=function(){can=true};
var max=parseInt(box.scrollHeight/2);
(function(){
var stop=box.scrollTop%18==0&&!can;
if(!stop){
var set=n>0?[max,0]:[0,max];
box.scrollTop==set[0]?box.scrollTop=set[1]:box.scrollTop+=n;
document.title = box.scrollTop;
};
setTimeout(arguments.callee,box.scrollTop%18?fq:w);
})();
};
myGod('div1',1200,-1);
</script>
</html>

解决方案 »

  1.   

    box.scrollTop%18?fq:wbox.scrollTop%18 只是作为判断条件,返回的是fq或者w二者其中的一个,而这二者则是正常的毫秒值。技术关键点就是:box.scrollTop的意义,%的常用技巧,?:三目运算符的意义。
      

  2.   

     var max=parseInt(box.scrollHeight/2);这里的除以2是什么意思?我看除以3或更大的数反而翻的更平衡,为什么?
      

  3.   

    box这个的滚动条高度除以2的结果就等于滚动条位置的值
      

  4.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <title> code.js.cn </title>
    <style>
    a{font-size:15px;line-height:18px;text-decoration:none;color:#333;font-family:Arial;font-size:12px;}
    .shell{
        width:900px;
    }
    .core{
        height:18px;
        overflow:hidden;
    }
    </style>
    </head>
    <body>
    <div class="shell">
        <div id="div1" class="core">
    <table border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td align="center"><a href="#">1请教高手帮我看下这段代码 FLASH显示不了</a></td>
    <td align="center"><a href="javascript:">2请教在UTF-8编辑下的符号显示问题</a></td>
    <td align="center"><a href="javascript:">3jquery做的一个滑动效果,不知如何增加延迟,现在太灵敏了</a></td>
    </tr>
    <tr>
    <td align="center"><a href="javascript:">4技术研究-QQ09版按钮渐显渐隐的由来 </a></td>
    <td align="center"><a href="javascript:">5javascript读取Json数据并分页显示,支持键盘和滚轮翻页 </a></td>
    <td align="center"><a href="javascript:">6腾讯网奇怪的PNG文件,拜师以求解惑</a></td>
    </tr>
    </table>    </div> 
    </div>
    </body>
    <script>
    function myGod(id,w,n){
        var box=document.getElementById(id),can=true,w=w||1500,fq=fq||10,n=n==-1?-1:1;
        box.innerHTML+=box.innerHTML;
        box.onmouseover=function(){can=false};
        box.onmouseout=function(){can=true};
        var max=parseInt(box.scrollHeight/3);
        (function(){
            var stop=box.scrollTop%18==0&&!can;
            if(!stop){
                var set=n>0?[max,0]:[0,max];
                box.scrollTop==set[0]?box.scrollTop=set[1]:box.scrollTop+=n;
                document.title = box.scrollTop;
            };
            setTimeout(arguments.callee,box.scrollTop%18?fq:w);
        })();
    };
    myGod('div1',1200,+1);
    </script>//http://topic.csdn.net/u/20111118/00/1b273f08-2c07-4b0a-951e-07d6fd7ea851.html?65231
    </html>===========================================================
    我改成了表格三列二行自动往下翻,如果是除以2,   var max=parseInt(box.scrollHeight/2);
    每翻二次就会出现卡一次如果改为除以3,   var max=parseInt(box.scrollHeight/3);
    就不卡了,为什么?这才是我问除以2是什么意思?如果改成其它数字又会如何?
      

  5.   

    这个var max=parseInt(box.scrollHeight/2);很顺畅
    不知道你所说的"每翻二次就会出现卡一次"是什么意思
      

  6.   

    你复制以上的代码,把 var max=parseInt(box.scrollHeight/3);
    改成var max=parseInt(box.scrollHeight/2);在IE9下就看到出错效果了
      

  7.   

    我的代码是var max=parseInt(box.scrollHeight/2);的
      

  8.   

    就是var max=parseInt(box.scrollHeight/2);出错改成3才行