在网在找了段文字滚动的代码,自己想加工成个类方便以后使用,想完成如下功能://创建一个类beenyPmd(sd,fx,obj1,obj2,obj3)
//sd  控制滚动速度
//fx 控制滚动方向(上下左右)
//obj1,obj2,obj3分别为三个DIV对像
//pmd 方法根据 fx方向向上下左右移动
//play 方法开始滚动
//stop 方法停止滚动
<div id="lyxBox" style="width:100px; height:100px; overflow:hidden;">
<div id="text1">
My name is Li Fuli! I love my country! I love my family!<br />
我是李福利我爱我的祖国!我爱我家 <br />
<hr>
</div>
<div id="text2">
</div>
</div>
<script>
Function beenyPmd(sd,fx,obj1,obj2,obj3)
{
this.sd = sd;
this.fx = fx;
this.obj1 = obj1;
this.obj2 = obj2;
this.obj3 = obj3;
this.numHeight = obj1.scrollHeight - obj1.offsetHeight;
this.numWidth = obj1.scrollWidth - obj1.offsetWidth;
obj3.innerHTML = obj2.innerHTML;
this.pmd = function(){
if(this.obj2.offsetTop - this.obj1.scrollTop<=0||(this.obj3.offsetTop - this.obj1.scrollTop == 0 - this.numHeight))
{
this.obj1.scrollTop-=this.obj2.offsetHeight;
}else{
this.obj1.scrollTop++;
}
}
this.stop = function(kk){
clearInterval(kk);
}
this.play = function(){
return setInterval(this.pmd,this.sd);
}
}
var ss = new beenyPmd(100,1,lyxBox,text1,text2);
var kk = ss.play;
ss.obj1.onmouseover = ss.stop(kk);
ss.obj1.onmouseout = ss.play;
</script>

解决方案 »

  1.   

    功能不完善,错误太多,帮你改点基本的错误
    function beenyPmd(sd,fx,obj1,obj2,obj3)
    {
        this.sd = sd;
        this.fx = fx;
        this.obj1 = obj1;
        this.obj2 = obj2;
        this.obj3 = obj3;
        this.numHeight = obj1.scrollHeight - obj1.offsetHeight;
        this.numWidth = obj1.scrollWidth - obj1.offsetWidth;
        obj3.innerHTML = obj2.innerHTML;
        var me = this;
        this.pmd = function() {
            if (me.obj2.offsetTop - me.obj1.scrollTop <= 0 || (me.obj3.offsetTop - me.obj1.scrollTop == 0 - me.numHeight)) {
                me.obj1.scrollTop -= me.obj2.offsetHeight;
            } else {
                me.obj1.scrollTop++;
            }
        }
        this.stop = function(kk){
            clearInterval(kk);
        }
        this.play = function(){
            return setInterval(this.pmd,this.sd);
        }
    }
        var ss = new beenyPmd(100,1,lyxBox,text1,text2);
        var kk = ss.play();
        ss.obj1.onmouseover = function() { ss.stop(kk); }
        ss.obj1.onmouseout = function() { kk = ss.play(); }
      

  2.   

    错误地方太多:
    1.function应该小写Function beenyPmd(sd,fx,obj1,obj2,obj3)2.script最好放到head里面并在在window.onload事件后再执行代码3.
    3.函数没有加括号var kk = ss.play;
    4.不要直接直接用id引用dom
    5.对于this指针理解不够
    这是修改后的:
    <head>
    <script>
    window.onload=function(){
    function $(id){return document.getElementById(id)}
    function beenyPmd(sd,fx,obj1,obj2,obj3)
    {
    this.sd = sd;
    this.fx = fx;
    this.obj1 = obj1;
    this.obj2 = obj2;
    this.obj3 = obj3;
    this.numHeight = obj1.scrollHeight - obj1.offsetHeight;
    this.numWidth = obj1.scrollWidth - obj1.offsetWidth;
    obj3.innerHTML = obj2.innerHTML;
    this.pmd = function(me){
    return(function(){
            if(me.obj2.offsetTop - me.obj1.scrollTop<=0||(me.obj3.offsetTop - me.obj1.scrollTop == 0 - me.numHeight))
            {
                me.obj1.scrollTop-=me.obj2.offsetHeight;
            }else{
                me.obj1.scrollTop++;
            }
    })
    }
    this.stop = function(kk){
        clearInterval(kk);
    }
    this.play = function(){
        return setInterval(this.pmd(this),this.sd);
    }
    }
    var ss = new beenyPmd(100,1,$("lyxBox"),$("text1"),$("text2"));
    var kk;
    ss.obj1.onmouseover = function(){ss.stop(kk);}
    ss.obj1.onmouseout = function(){kk=ss.play();}
    }
    </script></head>
    <body>
    <p id="me">dsjhfj</p>
    <div id="lyxBox" style="width:100px; height:100px; overflow:hidden;">
    <div id="text1">
    My name is Li Fuli! I love my country! I love my family!<br />
    我是李福利我爱我的祖国!我爱我家 <br />
    <hr>
    </div>
    <div id="text2">
    </div>
    </div>
    </body>
      

  3.   


    <div id="demo" style="width:100px; height:100px; overflow:hidden;">
    <div id="demo1">
    My name is Li Fuli! I love my country! I love my family!<br />
    我是李福利我爱我的祖国!我爱我家 <br />
    <hr>
    </div>
    <div id="demo2">
    </div>
    </div>
     <script>
       var speed=10;
       var oldnum=demo.scrollHeight-demo.offsetHeight;
       demo2.innerHTML=demo1.innerHTML;
       function Marquee(){
       //alert(demo2.offsetTop);
       //alert('s'+demo.scrollTop);
       if(demo2.offsetTop-demo.scrollTop<=0 || (demo2.offsetTop-demo.scrollTop==0-oldnum))
       {
       demo.scrollTop-=demo1.offsetHeight;
       }
       else{
       demo.scrollTop++;
       
       }
       }
       var MyMar=setInterval(Marquee,speed)
       demo.onmouseover=function() {clearInterval(MyMar)}
       demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}
     </script> 
    谢谢各位,得好好学习!我是看到上面的代码就想自己整理成一个类以后方便使用!我想大家运行下应该能明白我的思路的,请大家指点!