这是当前的,工作的,javascript图像旋转器。相信它最初是用Dreamweaver创建的。继承项目。
试图找出如何添加以下功能的链接。只有3张图像正在使用,每张图像都需要一个单独的链接。提前谢谢!
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2]; x.onclick=function(){window.location.href=a[i+3]}; }
}
// Comma separated list of images to rotate
var imgs = new Array('images/swap1.jpg','images/swap2.jpg','images/swap3.jpg');
imgLinks = new Array('http://example.com','http://scifit.com/proseries/proseries.shtml','http://example.com');
// delay in milliseconds between image swaps 1000 = 1 second
var delay = 8000;
var counter = 0;
function preloadImgs(){
for(var i=0;i<imgs.length;i++){
MM_preloadImages(imgs[i]);
}
}
function randomImages(){
if(counter == (imgs.length)){
counter = 0;
}
MM_swapImage('rotator', '', imgs[counter++]);
setTimeout('randomImages()', delay);
}
答案 0 :(得分:3)
更新的答案: 请改用此代码。我重新写了我的原始答案,因为它有一些问题。用以下内容替换整个Dreamweaver插入的代码:
function MM_preloadImages() { //v3.0
var d=document;
if(d.images){
if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){
d.MM_p[j]=new Image;
d.MM_p[j++].src=a[i];
}
}
}
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr;
for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_findObj(n, d) { //v4.01
var p,i,x;
if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document;
n=n.substring(0,p);
}
if(!(x=d[n])&&d.all) x=d.all[n];
for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n);
return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments;
document.MM_sr=new Array;
for(i=0;i<(a.length-2);i+=3) {
console.log(a);
if ((x=MM_findObj(a[i]))!=null){
document.MM_sr[j++]=x;
if(!x.oSrc) x.oSrc=x.src;
x.src=a[i+2];
x.onclick=function(){
window.location.href=a[i];
};
}
}
}
// Comma separated list of images to rotate
var imgs = new Array('images/swap1.jpg','images/swap2.jpg','images/swap3.jpg');
imgLinks = new Array('http://scifit.com/proseries/proseries.shtml','http://scifit.com/proseries/proseries.shtml','http://scifit.com/proseries/proseries.shtml');
// delay in milliseconds between image swaps 1000 = 1 second
var delay = 8000;
var counter = 0;
function preloadImgs(){
for(var i=0;i<imgs.length;i++){
MM_preloadImages(imgs[i]);
}
}
function randomImages(){
if(counter == (imgs.length)){
counter = -1;
}
counter++;
MM_swapImage('rotator', '', imgs[counter], imgLinks[counter]);
setTimeout('randomImages()', delay);
}
然后,在您的BODY标签中,您可能会看到类似这样的内容:
<body onload="preloadImgs() ...
将其更改为:
<body onload="preloadImgs();randomImages();">
这会强制第一次调用randomImages
,这会导致初始图像受到MM_swapImage
中完成的工作的约束。您获得undefined
网址的原因是因为在我的代码中这一行:
x.onclick=function(){ ...
当我应该呼叫a[i+3]
时,我正在呼唤a[i]
。
从语义的角度来看,这绝不是一个很好的答案,但它确实有效。