我一直在努力寻找一些JavaScript代码,让我可以在网页上自动滚动图像。经过漫长的搜索,我终于找到了足够接近的东西。然后我尽可能地对它进行了定制,以使其完成我想要的功能。
这个测试是在没有DOCTYPE的页面上完成的,所以当我移动它转到一个有DOCTYPE的页面,javascript被搞砸了,并且拒绝滚动。它只显示了一个固定的图像(在safari和firefox上)。
我已将这两个网页上传到我的MobileMe网站,以便您可以看一看。
没有DOCTYPE的网页: web.me / zubby
具有DOCTYPE的页面: web.me/zubby/2.html
javascript也在下面详细介绍。我会非常感激,如果有人可以帮助我。
我只上传相关文件,所以萤火虫可能会抱怨不存在的功能。
var pic = new Array(); function banner(name,width,link){ this.name = name this.width = width this.link = link } ; pic [0] = new banner('images / cellarpics / cellarbynightsmall.jpg',203,'images / cellarpics / cellarbynightsmall.jpg'); pic [1] = new banner('images / cellarpics / insidecellarnewsmall.jpg',203,'images / cellarpics / insidecellarnewsmall.jpg'); pic [2] = new banner('images / cellarpics / mainshotwebsmall.jpg',203,'images / cellarpics / mainshotwebsmall.jpg'); pic [3] = new banner('images / cellarpics / MicroCelllar2tileopensmall.jpg',203,'images / cellarpics / MicroCelllar2tileopensmall.jpg'); pic [4] = new banner('images / cellarpics / openmicrosmall.jpg',203,'images / cellarpics / openmicrosmall.jpg'); pic [5] = new banner('images / cellarpics / topopenweb1small.jpg',203,'images / cellarpics / topopenweb1small.jpg'); pic [6] = new banner('images / cellarpics / topweb2small.jpg',203,'images / cellarpics / topweb2small.jpg'); pic [7] = new banner('images / cellarpics / topwebclosed1small.jpg',203,'images / cellarpics / topwebclosed1small.jpg'); / * 图片[8] =新横幅('www.sxc.hu/pic/s/d/da/da9l/290444_yellow_rose.jpg'102,'http:/ /www.sxc.hu/pic/m/d/da/da9l/290444_yellow_rose.jpg') * / var speed = 10; var kk = pic.length; var ii; var hhh; var nnn; var myInterval; var myPause; var mode = 0; var imgArray = new Array(kk); var myLeft = new Array(kk); (ii = 0; ii< kk; ii ++){ imgArray [ii] = new Image() imgArray [ii] .src = pic [ii]的 。名称 imgArray [ii] .width = pic [ii] .width hhh = 0 (nnn = 0; nnn原因在于使用doctype时,设置css声明的工作方式不同,似乎只有一个数字是不够的......为了使其工作,在此函数中使用autoscroll()
变更
document.images [ii] .style.left = myLeft [ii]
至
document.images [ii] .style.left = myLeft [ii] +px
另外,您的两个脚本不会加载,menu.js和js / prettyPhoto.js
I've been searching the net hard for some javascript code that allows me to automatically scroll images non-stop horizontally on a webpage. After a long time searching, I finally came across something that was close enough. I then customised it as much as possible to make it do exactly what I wanted it to do.
This testing was done on a page without a DOCTYPE, so when I moved it over to a page that had a DOCTYPE, the javascript got messed up and refused to scroll. It just showed a single stationary image (on safari and firefox)
I've uploaded both webpages to my MobileMe site so you guys can have a look.
The page without a DOCTYPE: web.me/zubby
The page with a DOCTYPE: web.me/zubby/2.html
the javascript is also detailed below. I'll be extremely thankful if someone can help me out with this.
I only uploaded the relevant files so firebug will probably complain about non-existent functions.
var pic = new Array(); function banner(name, width, link){ this.name = name this.width = width this.link = link }; pic[0] = new banner('images/cellarpics/cellarbynightsmall.jpg',203,'images/cellarpics/cellarbynightsmall.jpg'); pic[1] = new banner('images/cellarpics/insidecellarnewsmall.jpg',203,'images/cellarpics/insidecellarnewsmall.jpg'); pic[2] = new banner('images/cellarpics/mainshotwebsmall.jpg',203,'images/cellarpics/mainshotwebsmall.jpg'); pic[3] = new banner('images/cellarpics/MicroCelllar2tileopensmall.jpg',203,'images/cellarpics/MicroCelllar2tileopensmall.jpg'); pic[4] = new banner('images/cellarpics/openmicrosmall.jpg',203,'images/cellarpics/openmicrosmall.jpg'); pic[5] = new banner('images/cellarpics/topopenweb1small.jpg',203,'images/cellarpics/topopenweb1small.jpg'); pic[6] = new banner('images/cellarpics/topweb2small.jpg',203,'images/cellarpics/topweb2small.jpg'); pic[7] = new banner('images/cellarpics/topwebclosed1small.jpg',203,'images/cellarpics/topwebclosed1small.jpg'); /* pic[8] = new banner('www.sxc.hu/pic/s/d/da/da9l/290444_yellow_rose.jpg',102,'www.sxc.hu/pic/m/d/da/da9l/290444_yellow_rose.jpg') */ var speed = 10; var kk = pic.length; var ii; var hhh; var nnn; var myInterval; var myPause; var mode = 0; var imgArray = new Array(kk); var myLeft = new Array(kk); for (ii=0;ii<kk;ii++){ imgArray[ii] = new Image() imgArray[ii].src = pic[ii].name imgArray[ii].width = pic[ii].width hhh=0 for (nnn=0;nnn<ii;nnn++){ hhh=hhh+pic[nnn].width }; myLeft[ii] = hhh }; function ready(){ for (ii=0;ii<kk;ii++){ if (document.images[ii]plete == false){ return false break }; }; return true }; function startScrolling(){ if (ready() == true){ window.clearInterval(myPause) myInterval = setInterval("autoScroll()",speed) }; }; function autoScroll(){ for (ii=0;ii<kk;ii++){ myLeft[ii] = myLeft[ii] - 1 if (myLeft[ii] == -(pic[ii].width)){ hhh = 0 for (nnn=0;nnn<kk;nnn++){ if (nnn!=ii){ hhh = hhh + pic[nnn].width }; }; myLeft[ii] = hhh }; document.images[ii].style.left = myLeft[ii] }; mode = 1 }; function stop(){ if (mode == 1){ window.clearInterval(myInterval) }; if (mode == 0){ window.clearInterval(myPause) }; }; function go(){ if (mode == 1){ myInterval = setInterval("autoScroll()",speed) }; if (mode == 0){ myPause = setInterval("startScrolling()",3000) }; }; myPause = setInterval("startScrolling()",100) for (ii=0;ii<kk;ii++){ document.write('<a href="' + pic[ii].link + '" target="_blank"><img style="height:131px;position:absolute;top:0;left:' + myLeft[ii] + ';" src="' + pic[ii].name + '" onMouseOver="stop()" onMouseOut="go()" /></a>'); };解决方案
In IE it works. The reason is that with doctype, setting css declaration left works differently, seems that only a number is not enough...to make it work, in this function autoscroll()
Change
document.images[ii].style.left = myLeft[ii]
to
document.images[ii].style.left = myLeft[ii] + "px"
Also, two of your scripts don't load, menu.js and js/prettyPhoto.js
更多推荐
Javascript图像滚动不与DOCTYPE一起使用
发布评论