本帖最后由 showbo 于 2010-11-12 11:07:06 编辑

解决方案 »

  1.   

    比如CSDN论坛左侧头像鼠标移上后会出来一个层,显示会员的资料。我要实现的就是当鼠标移到每个会员头像上时触发AJAX载入用户显示用户,上传的图片,因为每个对应会员会发布很多图片,所以这些图片要通过JS滚动或分页的形式在这个层里显示
    -----
    没注意看,因为大致一瞄的过程里,被你一些话说得失去耐心了。你说的这个,感觉就做成现在CSDN这样就可以。图片只取一个。毕竟只是一个意思一下的信息小显示,要想看详情就点击头像到详细页去。你现在想的,就是吃力不讨好,不觉得有多大价值。
      

  2.   

    理解能力差,都没明白楼主要什么效果!如果只是 csdn 鼠标移到头像上,实现一个层,到很容易!这个头像做mouseover 事件 传用户的编号,感觉用户编号,获取用户相关信息,显示在一个div,设置一下div 的坐标就可以,
      

  3.   


    是的,获取用户编号传到AJAX.ASP页面,读取到该用户的所有图片,比如他有发了20张,这20张图片通过AJAX载入后需要显示在DIV内,由于图片较多,DIV宽度有限,就需要使用在DIV内进行滚动或分页显示的形式,这里用到JS,问题就出在这里
      

  4.   

    你可以在显示在DIV类加一个 iframeiframe 指向 你的 AJAX 页面,这样js 分别在不同的页面,就不会冲突了
    冲突原因,就是 
    var Speed = 1; //速度(毫秒)
    var Space = 5; //每次移动(px)
    var PageWidth = 528; //翻页宽度
    var fill = 0; //整体移位
    var MoveLock = false;
    var MoveTimeObj;
    var Comp = 0;
    var AutoPlayObj = null;
    你这些变量都是全局的,只能设置一个 div 的滚动效果!
    可以把这些滚动效果封装成一个对象
    设置不同的div 的滚动效果,new 不同的对象就可以了!
      

  5.   

    给你一个很好的封装好的纯js 无缝滚动代码! 一个页面多个滚动效果,不会冲突!http://www.popub.net/script/MSClass.html
      

  6.   

    谢谢  hch126163 我就是要你这样的实在的东西,我会去试试看的,其他朋友如果有做过类似的或者愿意帮忙弄下代码的,万分感谢!!!
      

  7.   

    请问:hch126163 这里
    -----------------------
    function Marquee()
    {
    this.ID = document.getElementById(arguments[0]);
    if(!this.ID)
    {
    alert("您要设置的\"" + arguments[0] + "\"初始化错误\r\n请检查标签ID设置是否正确!");
    this.ID = -1;
    return;
    }
    --------------
    document.getElementById(arguments[0]);  因为我页面里有很多的DIV,这里我应该如何设置滚动DIV的ID,才能使之对应
      

  8.   

    你的 ID 编号不能重复!必须唯一
    arguments[0] 是你传的第一个参数! 即要滚动的div的ID
      

  9.   

    //参数动态赋值法
    var marquee1 = new Marquee("marquee") *此参数必选 你要滚动的div ID
    marquee1.Direction = "top"; // 方向或者 marquee1.Direction = 0;
    marquee1.Step = 1;
    marquee1.Width = 760;
    marquee1.Height = 52;
    marquee1.Timer = 50;
    marquee1.DelayTime = 5000;
    marquee1.WaitTime = 3000;
    marquee1.ScrollStep = 52;
    marquee1.Start(); 参数说明:
    ID "marquee" 容器ID (必选)
    Direction (0) 滚动方向 (可选,默认为0向上滚动) 可设置的值包括:0,1,2,3,"top","bottom","left","right" (0向上 1向下 2向左 3向右)
    Step (1) 滚动的步长 (可选,默认值为2,数值越大,滚动越快)
    Width (760) 容器可视宽度 (可选,默认值为容器初始设置的宽度)
    Height (52) 容器可视高度 (可选,默认值为容器初始设置的高度)
    Timer (50) 定时器 (可选,默认值为30,数值越小,滚动的速度越快,1000=1秒,建议不小于20)
    DelayTime (5000) 间歇停顿延迟时间(可选,默认为0不停顿,1000=1秒)
    WaitTime (3000) 开始时的等待时间(可选,默认或0为不等待,1000=1秒)
    ScrollStep (52) 间歇滚动间距 (可选,默认为翻屏宽/高度,该数值与延迟均为0则为鼠标悬停控制,-1禁止鼠标控制)多个滚动的div 这样就不会冲突了
    var marquee2 = new Marquee("marquee2");var marquee3 = new Marquee("marquee3")
      

  10.   

    非常感谢您,我下午弄了下,还是有几个地方不明白,发现图片还是不能滚动,因为我这里涉及到AJAX。我把我代码简略的写一下,麻烦您再看看,非常感谢,感觉你这个应该能解决。
    这是显示每个会员的页面huiyuan.asp<%sql=" select hyid from huiyuan "
    set rs=server.createobject("adodb.recordset")                     
    rs.open sql,conn,1,1                     
    do while not rs.eof
    hyid=rs("hyid")
    divname="ca"&hyid %>  这里创建显示层的名称,因为hyid是单一不重复的
    <div onmouseover="callajax(hyid)">查看会员图片</div>   当鼠标移上后触发AJAX并载入内容
    <div id="<%=divname%>" style=".....略....."></div>  这里是AJAX载入内容后显示的层
    <%rs.movenext
    loop
    rs.colse%>  
    set rs=nothing 我现在已经命名了不重复的层名称  <div id="<%=divname%>"></div>  
    但是我不知道该怎么调用触发滚动代码 
    我尝试这样触发,但是图片不滚动<div id="<%=divname%>" onMouseOver="Marquee(<%=divname%>)" style=".....略....."></div>  参数动态赋值这边则写成这样
                   var marquee1 = new Marquee(agh)
    marquee1.Direction = 2;
    marquee1.Step = 20;
    marquee1.Width = 760;
    marquee1.Height = 50;
    marquee1.Timer = 20;
    marquee1.DelayTime = 2000;
    marquee1.WaitTime = 2000;
    marquee1.ScrollStep = 152;
    marquee1.Start();我这样进行测试,代码没提示错误,能显示出钱几张图片,但是不会滚动,还希望您看错在哪里,该怎么解决。
                 
      

  11.   

    Direction = 2 方向是2 是像左滚动水平滚动时,你的css 要注意一下
    div1 是外层div 设置overflow:hidden 超过隐藏
    <div id="div1" style=" WIDTH: 762px; HEIGHT: 52px; overflow:hidden;border:1px solid #cccccc;padding:0px;">
    <div style=" WIDTH:1900; HEIGHT: 52px; padding:0px;  float:left; overflow:visible;padding:0px;margin:0px ">
    // 这儿是你的图片列表,如果每个图片宽 200px,有20  张图片,那么请设置上面的红色div宽度是4000!
    因为是水平滚动,最外面div 是可视范围宽度,如果这不设置4000 这个div,那么你超过的图片就会自动换行,显示到下面,又因为最外面div 是超过隐藏 所以换行的部分不可见,就没有滚动效果了!
    用firebug,很容易发现这个问题!如果你不用这个红色的div ,保证不然超过div1宽度的图片换行,还可以用表格,设置一行20列。因为表格是一行,所以不会自动换行!
    </div>
    </div>
      

  12.   

    还有一点需要注意,你弹出层是ajax 动态获取的,你设置js 滚动效果要在你Ajax 请求完成,并且 浏览器加载完成你获取到的 休息后,你才获取得到这个 dom 对象!
      

  13.   

    我用了你这个办法还是不行,不滚动,是不是我调用这里有问题:
    我层这里用了动态的名称,保证层的名称不重名,然后用onMouseOver="Marquee(‘<%=divname%>’)" 去调用
    <div id="<%=divname%>" onMouseOver="Marquee(‘<%=divname%>’)" style=".....略....."></div>JS里赋值我就是
    参数动态赋值这边则写成这样
      var marquee1 = new Marquee(agh) 
    marquee1.Direction = 2;
    marquee1.Step = 20;
    marquee1.Width = 760;
    marquee1.Height = 50;
    marquee1.Timer = 20;
    marquee1.DelayTime = 2000;
    marquee1.WaitTime = 2000;
    marquee1.ScrollStep = 152;
    marquee1.Start();这样有没有问题,我感觉是错在这里,但是又不知道该怎么调用,谢谢,麻烦您再看看
      

  14.   

    onMouseOver="Marquee(‘<%=divname%>’)" 这样写肯定有问题撒! Marquee 需要 new 创建实例 才能使用!你可以写: onload = "setMarquee(‘<%=divname%>’)"然后再:
    function setMarquee(id){
    var marquee1 = new Marquee(id) 
    marquee1.Direction = 2;
    marquee1.Step = 20;
    marquee1.Width = 760;
    marquee1.Height = 50;
    marquee1.Timer = 20;
    marquee1.DelayTime = 2000;
    marquee1.WaitTime = 2000;
    marquee1.ScrollStep = 152;
    marquee1.Start();
    }你自己用 firebug 调试一下,一步一步的走,你就知道是哪里的问题了!