谢谢大家  麻烦大家点击这个链接地址 
http://www.cnblogs.com/blueSkys/archive/2011/09/28/2194420.html  
博客园的看看有啥解决办法 期待JS达人。。谢谢

解决方案 »

  1.   

    新手浅见  我觉得用<marquee>标签+css会更简单点
      

  2.   


    嘿嘿 谢谢。。但是这个demo不是为了实现功能 而是为了让自己有一些js技能有所提升
      

  3.   

    obj:null,
      obj_child1:null,
      obj_child2:null,
      time_id : null,
    这些没有闭包,有冲突吧。
      

  4.   

    按LZ现在的结构,没有new 一个实例。那么slide 永远都只是一个一般的对象,当第一次slide(xxxx)的时候,slide就是他自己,当再次slide(xxx)的时候,之前的slide 将会被新的slide对象覆盖。没有实例化啊
      

  5.   

    var slide = function(div_id,scro_direction,speed,width,height){
    return new slide.prototype.init(div_id,scro_direction,speed,width,height);
    }
    slide.prototype = {
    init:function(div_id,scro_direction,speed,width,height){
            
        },
        .....
    }
    slide.prototype.init.prototype = slide.prototype;这么改一下,然后再编码的时候LZ注意一下this的指向
      

  6.   

    感觉 这不是 我想要的解决方式。  我这个例子 其实是仿照DOM_Drag  库来实现例子的。。这个库可以实现2个容器 同时具备拖动属性。。为啥  我这个不可以呢? 
      

  7.   

    问题不大
    1、示例的 html 中两个 id 重名,而实际控制时 id 必须唯一
    2、需用数组保存实例的id,以便于定时控制
      

  8.   


    你是说time_id 吗?  我刚刚看过了  实际运行出来 2个time_id 应该是不同的哇
      

  9.   

        实际上仔细观察你会发现        window.onload = function () {
                slide.init('con', 'top', 30, '200px', '200px');
                slide.init('coe','top',30,'200px','200px');
            }
    这样执行时,下面列的滚动速度,要比注释掉第二行后,第一列的滚动速度要快。说明你两次的setInterval都执行了,只不过轮询执行的方法top_do都是对第二次的容器进行操作.问题出在 top_do 方法里,全局只有一个slide对象,在轮询执行时,都是对slide.obj以及slide.obj_child2和slide.obj_child1做判断,当你第二次调用init时,其实已经把这几个对象给覆盖了
     
        
      

  10.   


    所以说 我这种的解决办法 只有 new  也就是实例化后才能实现我要的效果吗?
      

  11.   


    不一定非要new,你只要把top_do方法里的几个变量用参数传递进来,比如把要操作的节点的id当做参数传递给top_do,然后在top_do方法里去getElementById取到这些元素进行判断操作,就可以了
      

  12.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>img_slide</title>
        <script type="text/javascript" src="javascripts/slide.js"></script>
        <script type="text/javascript">
            /**
             * @author jiashu
             */        var slide = {
                div_id:null,
                obj:null,
                obj_child1:null,
                obj_child2:null,
                time_id:null,
                //div_id 住容器的ID scro_direction 图片滚动方向 speed 滚动速度
                init:function (div_id, scro_direction, speed, width, height) {
                    if (document.getElementById(div_id) == null) {
                        return false;
                    }                var container = document.getElementById(div_id);//
                    slide.div_id = div_id;
                    var inner_html = container.innerHTML;
                    container.innerHTML = "";                var container_c1 = this.create_container("div", div_id + "1", inner_html);
                    this.obj_child1 = div_id + "1";//对第一个字容器进行处理
                    var container_c2 = this.create_container("div", div_id + "2", inner_html);
                    this.obj_child2 = div_id + "2";//对第二个子容器处理                container.appendChild(container_c1);
                    container.appendChild(container_c2);
                    container.style.overflow = "hidden";
                    container.style.width = width;
                    container.style.height = height;                container.scro_direction = scro_direction;
                    container.speed = speed;                this.start.call(container);
                    container.onmouseout = slide.start;
                    container.onmouseover = slide.stop;
                },
                stop:function () {
                    clearInterval(slide.time_id);
                },
                start:function () {
                    var con = slide.obj = this;
                    slide.time_id = setInterval("slide.top_do(" + (slide.div_id + '1') + "," + (slide.div_id + '2') + "," + slide.div_id + ")", con.speed);
                },
                top_do:function (id1, id2, id) {
                    if (id2.offsetTop - id.scrollTop <= 0) {
                        id.scrollTop -= id1.offsetHeight;
                    }
                    else {
                        id.scrollTop++;
                    }
                },
                create_container:function (type, id, innerHTML) {
                    var new_container = document.createElement(type);
                    new_container.id = id;
                    new_container.innerHTML = innerHTML;
                    return new_container;
                }
            }
            window.onload = function () {
                slide.init('con', 'top', 30, '200px', '200px');
                slide.init('coe','top',30,'200px','200px');
            }
        </script>
    </head>
    <body>
    <h1>New Web Project Page</h1><div id="con">
        <p><img src="images/enemy.png"></p>    <p><img src="images/player.png"></p>    <p><img src="images/enemy.png"></p>    <p><img src="images/player.png"></p>    <p><img src="images/enemy.png"></p>    <p><img src="images/player.png"></p>    <p><img src="images/enemy.png"></p>    <p><img src="images/player.png"></p>    <p><img src="images/enemy.png"></p>
    </div><div id="coe">
        <p><img src="images/enemy.png"></p>    <p><img src="images/player.png"></p>    <p><img src="images/enemy.png"></p>    <p><img src="images/player.png"></p>    <p><img src="images/enemy.png"></p>    <p><img src="images/player.png"></p>    <p><img src="images/enemy.png"></p>    <p><img src="images/player.png"></p>    <p><img src="images/enemy.png"></p>
    </div>
    </body>
    </html>
      

  13.   


    谢谢但是 这样我感觉脱离了我的初衷 我想把silde作为一个对象 里面obj_child1 只是它的属性
    这样的话 如果不new 是否可以有其他方式 做到 每次 调用init()  内存中就会有相应的silde对象保存下来