<!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"><div id="div1">
<table border='0' width='330px' cellspacing='0' cellpadding='0'>
<tr><td style='height:20px;'>111111</td></tr>
<tr><td style='height:20px;'>222222</td></tr>
<tr><td style='height:20px;'>333333</td></tr>
</table>
</div>
<div id="temp1" style="visibility: hidden">
</div>    <script type="text/javascript" language="javascript">
//<![CDATA[
var diva = document.getElementById("div1");
var tema = document.getElementById("temp1");
var xx_a = 0;
var marqueesHeight = 100; //内容区高度
var stop_a = false; //这个变量控制是否停止滚动
var preTop_a = 0; //这个变量用于判断滚动条是否已经到了尽头diva.noWrap = true; //这句表内容区不自动换行
diva.style.width = 0 + "px"; //于是我们可以将它的宽度设为0,因为它会被撑大
diva.style.height = marqueesHeight + "px";
diva.style.overflowY = "hidden"; //滚动条不可见
diva.onmouseover = function(){stop_a=true;}; //鼠标经过,停止滚动
diva.onmouseout = function(){stop_a=false;}; //鼠标离开,开始滚动document.body.onload = init;function init(){ //初始化滚动内容
while(parseInt(tema.offsetHeight) < parseInt(marqueesHeight)){
tema.innerHTML += diva.innerHTML;
}
diva.innerHTML = tema.innerHTML + tema.innerHTML;setTimeout(scrollUpa2,1000);
}function scrollUpa2(){
setInterval(scrollUpa,2000);
}function scrollUpa(){ //滚动条的驱动函数
if(xx_a == 20)
{
xx_a = 0;
return;
}
if(stop_a == true) return; //如果变量"stopscroll"为真,则停止滚动
preTop_a = parseInt(diva.scrollTop); //记录滚动前的滚动条位置
diva.scrollTop += 1; //滚动条向下移动一个像素
//如果滚动条不动了,则向上滚动到和当前画面一样的位置
//当然不仅如此,同样还要向下滚动一个像素(+1):
if(preTop_a == parseInt(diva.scrollTop)){
diva.scrollTop = tema.offsetHeight - marqueesHeight + 1;
}
xx_a += 1;
setTimeout(scrollUpa,10);
}//]]>
    </script>
</html>
以上代码去掉第一行<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
就可以正常运行,加上就不行了。我估计是JS代码不规范的原因,哪位大侠帮我改一下,使得加上DOCTYPE也能正常运行,谢谢了

解决方案 »

  1.   

    //<![CDATA[
    不注释 看看
      

  2.   


    直接写<![CDATA[,报错:语法错误
    去掉//<![CDATA[,//]]>
    或者加上<!--,-->
    都没有用,JS不能运行。谢谢你了
      

  3.   


    <!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></head>
    <body>
    <div id="div1">
        <table border='0' width='330px' cellspacing='0' cellpadding='0'>
            <tr><td style='height:20px;'>111111</td></tr>
            <tr><td style='height:20px;'>222222</td></tr>
            <tr><td style='height:20px;'>333333</td></tr>
        </table>
    </div>
    <div id="temp1" style="visibility: hidden">
    </div>
    </body>
    </html>
    <script type="text/javascript" language="javascript">
    //<![CDATA[
    var diva = document.getElementById("div1");
    var tema = document.getElementById("temp1");
    var xx_a = 0;
    var marqueesHeight = 100; //内容区高度
    var stop_a = false; //这个变量控制是否停止滚动
    var preTop_a = 0; //这个变量用于判断滚动条是否已经到了尽头diva.noWrap = true; //这句表内容区不自动换行
    diva.style.width = 0 + "px"; //于是我们可以将它的宽度设为0,因为它会被撑大
    diva.style.height = marqueesHeight + "px";
    diva.style.overflowY = "hidden"; //滚动条不可见
    diva.onmouseover = function(){stop_a=true;}; //鼠标经过,停止滚动
    diva.onmouseout = function(){stop_a=false;}; //鼠标离开,开始滚动document.body.onload = init;function init(){ //初始化滚动内容
    while(parseInt(tema.offsetHeight) < parseInt(marqueesHeight)){
    tema.innerHTML += diva.innerHTML;
    }
    diva.innerHTML = tema.innerHTML + tema.innerHTML;setTimeout(scrollUpa2,1000);
    }function scrollUpa2(){
    setInterval(scrollUpa,2000);
    }function scrollUpa(){ //滚动条的驱动函数
    if(xx_a == 20)
    {
    xx_a = 0;
    return;
    }
    if(stop_a == true) return; //如果变量"stopscroll"为真,则停止滚动
    preTop_a = parseInt(diva.scrollTop); //记录滚动前的滚动条位置
    diva.scrollTop += 1; //滚动条向下移动一个像素
    //如果滚动条不动了,则向上滚动到和当前画面一样的位置
    //当然不仅如此,同样还要向下滚动一个像素(+1):
    if(preTop_a == parseInt(diva.scrollTop)){
    diva.scrollTop = tema.offsetHeight - marqueesHeight + 1;
    }
    xx_a += 1;
    setTimeout(scrollUpa,10);
    }//]]>
        </script>
      

  4.   

    这种很常有,我还遇到docType和css冲突的咧。换个DOCTYPE
      

  5.   

    晕,写代码要规范,你body都没有,
    还document.body.onload = init;个毛?
    我们的软件行业啊,真可悲
      

  6.   

    谢谢LZ各位的回复3L,我用的是IE8和Maxthon,情况都一样。4L,十分感谢孟老大回我的贴,换成了window.onload = init; 情况还是一样,帮我在试试好吗?谢谢了,我现在单独写成静态的html了,也不能运行。5L,谢谢你的代码,还是不行。6L,3种DOCTYPE我都试过了,不行啊。我用的是VS2008,默认加的是Transitional再次麻烦大家帮我看看了,谢谢了。
      

  7.   


    谢谢你的指出,原代码是有head body的,单独提出来了忘加上了,现在加上后,情况还是如此。
      

  8.   

    你可以参考网上现有的,成功的不间断滚动的例子,应该是你的样式设置导致某些属性的值不能满足,如visibility:hidden等
      

  9.   

    谢谢大家的回复,我找到原因了:
    diva.style.width = 0 + "px"; //于是我们可以将它的宽度设为0,因为它会被撑大
    加了DOCTYPE后div并不会因为内容而撑大,去掉后正常了,谢谢大家了。
      

  10.   

    问题没看,和我以前遇到过的有点像,现在不用js谢,直接改jQuery插件吧,用这个做效果,还是比较方便的
      

  11.   

    document.body冲突了,改用document.documentElement吧,而且记得加单位 "px"