你可以在显示在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 不同的对象就可以了!
-----
没注意看,因为大致一瞄的过程里,被你一些话说得失去耐心了。你说的这个,感觉就做成现在CSDN这样就可以。图片只取一个。毕竟只是一个意思一下的信息小显示,要想看详情就点击头像到详细页去。你现在想的,就是吃力不讨好,不觉得有多大价值。
是的,获取用户编号传到AJAX.ASP页面,读取到该用户的所有图片,比如他有发了20张,这20张图片通过AJAX载入后需要显示在DIV内,由于图片较多,DIV宽度有限,就需要使用在DIV内进行滚动或分页显示的形式,这里用到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 不同的对象就可以了!
-----------------------
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,才能使之对应
arguments[0] 是你传的第一个参数! 即要滚动的div的ID
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")
这是显示每个会员的页面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();我这样进行测试,代码没提示错误,能显示出钱几张图片,但是不会滚动,还希望您看错在哪里,该怎么解决。
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>
我层这里用了动态的名称,保证层的名称不重名,然后用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();这样有没有问题,我感觉是错在这里,但是又不知道该怎么调用,谢谢,麻烦您再看看
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 调试一下,一步一步的走,你就知道是哪里的问题了!