link onder afbeeldingen in bannersysteem

Status
Niet open voor verdere reacties.

bnwiersma

Gebruiker
Lid geworden
9 sep 2007
Berichten
5
Ik heb een script voor een banner slideshow. Het werkt perfect. Echter wil ik dat op het moment dat je op een plaatje drukt dat je doorgelinkt wordt naar de site van het desbetreffende plaatje. Hoe zet ik een link onder de afbeelding? Onder elk plaatje moet een andere url. De urls heb ik ingevoerd bij "var url = new Array(......) en verderop heb ik geplaatst "newimage.setAttribute('url',alttext);". Waarom werken de links niet? Er verschijnt helemaal niets. Moet ik hier met een window.open werken?

Het script:

HTML:
<head>
<style type="text/css">
#slideshow {
	position:relative;
	height:75px;
	width:400px;
}
.imgfade {
	position:absolute;
	top:0px;
	left:0px;
	border:0;
	height:75px;
	width:400px
}
</style>
<script language="javascript1.2" type="text/javascript">
var images = new Array('/img/dirk.jpg','/img/cms.jpg','/img/loyens.jpg','/img/nauta.jpg','/img/adverteren.jpg');
var url = new Array('http:///www.dirkzwager.nl','http://www.cms-dsb.com','http://www.loyensloeff.com/','http://www.nautadutilh.com/');
var currentIndex = 0;
var nextIndex = 1;
var timeOutDelay = 4000;
var currentOpacity = new Array();
var FADE_STEP = 2;
var FADE_INTERVAL = 20;
var pause = false;
var browsertype;
var COUNTER;
function startSlideshow() {
	if (!document.getElementsByTagName || !document.getElementById || !document.getElementById('slideshow')) {
		return false;
	}
	currentOpacity[0]=99;
	for(i=1; i<images.length; i++) {
		currentOpacity[i]=0;
	}
	var slideshow = document.getElementById('slideshow');
	if (window.opera) {
		browsertype = 'opera';
	}
	else if (document.all) {
		browsertype = 'ie';
	} 
	else {
		browsertype = 'moz';
	}
	for(i=0; i<images.length; i++) {
		var newimage = document.createElement('IMG');
		newimage.setAttribute('id','image' + i);
		newimage.setAttribute('src',images[i]);
		newimage.setAttribute('url',alttext[i]);
		newimage.className = "imgfade";
		slideshow.appendChild(newimage);
		if (browsertype != 'opera') {
			setOpacity(newimage, 0);
		} else {
			newimage.style.visibility = 'hidden';
		}
	}
	if (browsertype != 'opera') {
		setOpacity(document.getElementById('image'+currentIndex), 100);
	} else {
		document.getElementById('image'+currentIndex).style.visibility = 'visible'
	}
	COUNTER = setTimeout("swapImage()",timeOutDelay);
}
function swapImage() {
	COUNTER = 0;
	if (browsertype != 'opera') {
		doFade =  setInterval("crossFade()",FADE_INTERVAL);
	} else {
		document.getElementById('image'+currentIndex).style.visibility = 'hidden';
		document.getElementById('image'+nextIndex).style.visibility = 'visible';
		currentIndex = nextIndex;
		nextIndex++;
		if(nextIndex == images.length) { 
			nextIndex=0;
		}
	}
	COUNTER = setTimeout("swapImage()",timeOutDelay);
}
function crossFade() {
	currentOpacity[currentIndex]-=FADE_STEP;
	currentOpacity[nextIndex] += FADE_STEP;
	setOpacity(document.getElementById('image'+currentIndex), currentOpacity[currentIndex]);
	setOpacity(document.getElementById('image'+nextIndex), currentOpacity[nextIndex]);
	if(currentOpacity[nextIndex]/100>=.98) {
		currentIndex = nextIndex;
		nextIndex++;
		window.clearInterval(doFade);
		clearInterval(doFade);
		if(nextIndex == images.length) { 
			nextIndex=0;
		}
	}
}
function setOpacity(obj, opacity) {
  opacity = (opacity == 100)?99.999:opacity;
  obj.style.filter = "alpha(opacity:"+opacity+")";
  obj.style.KHTMLOpacity = opacity/100;
  obj.style.MozOpacity = opacity/100;
  obj.style.opacity = opacity/100;
}
window.onload=(startSlideshow);
</script>
</head>

<body>
<div id="slideshow" style="height:75px; width:400px"><img src="/img/white.jpg" alt="" name="crossfade" id="crossfade" /></div>
</body>
 
Dit helpt je mogelijk op weg. :)
PHP:
<head>
<style type="text/css">
#slideshow {
	position:relative;
	height:75px;
	width:400px;
}
.imgfade {
	position:absolute;
	top:0px;
	left:0px;
	border:0;
	height:75px;
	width:400px
}
</style>
<script language="javascript1.2" type="text/javascript">
var img = new Array('/img/dirk.jpg','/img/cms.jpg','/img/loyens.jpg','/img/nauta.jpg','/img/adverteren.jpg');
var url = new Array('http://www.dirkzwager.nl/','http://www.cms-dsb.com/','http://www.loyensloeff.com/','http://www.nautadutilh.com/','http://www.adverteren.nl/');
var alt = new Array('www.dirkzwager.nl','www.cms-dsb.com','www.loyensloeff.com','www.nautadutilh.com','adverteren');
var currentIndex = 0;
var nextIndex = 1;
var timeOutDelay = 4000;
var currentOpacity = new Array();
var FADE_STEP = 2;
var FADE_INTERVAL = 20;
var pause = false;
var browsertype;
var COUNTER;
function startSlideshow() {
	if (!document.getElementsByTagName || !document.getElementById || !document.getElementById('slideshow')) {
		return false;
	}
	currentOpacity[0]=99;
	for(i=1; i<img.length; i++) {
		currentOpacity[i]=0;
	}
	var slideshow = document.getElementById('slideshow');
	if (window.opera) {
		browsertype = 'opera';
	}
	else if (document.all) {
		browsertype = 'ie';
	} 
	else {
		browsertype = 'moz';
	}
	for(i=0; i<img.length; i++) {
		var newlink = document.createElement('A');
		newlink.setAttribute('id','image' + i);
		newlink.setAttribute('href',url[i]);
		newlink.setAttribute('target','_blank');
		var newimage = document.createElement('IMG');
		newimage.setAttribute('src',img[i]);
		newimage.setAttribute('title',alt[i]);
		newimage.setAttribute('border',0);
		newimage.className = "imgfade";
		newlink.appendChild(newimage);
		slideshow.appendChild(newlink);
		if (browsertype != 'opera') {
			setOpacity(newimage, 0);
		} else {
			newimage.style.visibility = 'hidden';
		}
	}
	if (browsertype != 'opera') {
		setOpacity(document.getElementById('image'+currentIndex), 100);
	} else {
		document.getElementById('image'+currentIndex).style.visibility = 'visible'
	}
	COUNTER = setTimeout("swapImage()",timeOutDelay);
}
function swapImage() {
	COUNTER = 0;
	if (browsertype != 'opera') {
		doFade =  setInterval("crossFade()",FADE_INTERVAL);
	} else {
		document.getElementById('image'+currentIndex).style.visibility = 'hidden';
		document.getElementById('image'+nextIndex).style.visibility = 'visible';
		currentIndex = nextIndex;
		nextIndex++;
		if(nextIndex == img.length) { 
			nextIndex=0;
		}
	}
	COUNTER = setTimeout("swapImage()",timeOutDelay);
}
function crossFade() {
	currentOpacity[currentIndex]-=FADE_STEP;
	currentOpacity[nextIndex] += FADE_STEP;
	setOpacity(document.getElementById('image'+currentIndex), currentOpacity[currentIndex]);
	setOpacity(document.getElementById('image'+nextIndex), currentOpacity[nextIndex]);
	if(currentOpacity[nextIndex]/100>=.98) {
		currentIndex = nextIndex;
		nextIndex++;
		window.clearInterval(doFade);
		clearInterval(doFade);
		if(nextIndex == img.length) { 
			nextIndex=0;
		}
	}
}
function setOpacity(obj, opacity) {
  opacity = (opacity == 100)?99.999:opacity;
  obj.style.filter = "alpha(opacity:"+opacity+")";
  obj.style.KHTMLOpacity = opacity/100;
  obj.style.MozOpacity = opacity/100;
  obj.style.opacity = opacity/100;
}
window.onload = startSlideshow;

</script>
</head>

<body>
<div id="slideshow" style="height:75px; width:400px"><img src="/img/white.jpg" alt="" name="crossfade" id="crossfade" /></div>
</body>
Het gaat voornamelijk om:
PHP:
var img = new Array('/img/dirk.jpg','/img/cms.jpg','/img/loyens.jpg','/img/nauta.jpg','/img/adverteren.jpg');
var url = new Array('http://www.dirkzwager.nl/','http://www.cms-dsb.com/','http://www.loyensloeff.com/','http://www.nautadutilh.com/','http://www.adverteren.nl/');
var alt = new Array('www.dirkzwager.nl','www.cms-dsb.com','www.loyensloeff.com','www.nautadutilh.com','adverteren');



		var newlink = document.createElement('A');
		newlink.setAttribute('id','image' + i);
		newlink.setAttribute('href',url[i]);
		newlink.setAttribute('target','_blank');
		var newimage = document.createElement('IMG');
		newimage.setAttribute('src',img[i]);
		newimage.setAttribute('title',alt[i]);
		newimage.setAttribute('border',0);
		newimage.className = "imgfade";
		newlink.appendChild(newimage);
		slideshow.appendChild(newlink);
Je had een url array maar riep een alttext array aan, en de image array was één langer. Ik heb img, url, en alt array gebruikt.

url is geen attribuut van een img, je maakte <img url="" ...> en dat werkt niet.
Wat deze code doet is: <a id="" href="" target="_blank"><img src="" title="" border="0" class="imgfade"></a> :)

Het werkt vast nog niet helemaal, maar het lijkt me een goed begin. ;)


Vr.Gr. Egel.
 
@Egel

Heel erg bedankt voor de support en de enorm snelle reactie!

Ik zit momenteel op de uni voor college, maar zodra ik thuis ben ga ik het direct uitproberen en dan laat ik je zeker weten wat de uitkomst is.

Geweldig dat er zulke behulpzame mensen rondlopen....!!

Bedankt!
 
@Egel

Beste Egel,

Je hebt inderdaad helemaal begrepen waar het mij om ging. Ik heb jouw code gebruikt op mijn pagina en inderdaad: de link zit nu onder de afbeelding.:thumb:

Maar nu doet echter het bannersysteem het niet meer. Weet jij hoe dit kan? Het rare is dat hij nu op de afbeelding 'adverteren.jpg' staat en blijft staan, terwijl dit de laatste afbeelding is.....

Klik hier om mijn pagina te zien.

Kun jij mij verder helpen? Ik krijg het maar niet voor elkaar. (Ben pas een jaartje bezig met code schrijven en heb het mezelf aangeleerd. Php, html en css gaat aardig, maar javascript.....daar snap ik nog helemaal niets van merk ik:confused:)
 
Ik had het script nog een paar keer bekeken maar ik snapte het niet helemaal. De oplossing: een nieuwe schrijven! ;)

PHP:
<html>
<head>


<style type="text/css">
 #slideshow { position: relative; background: #fff; width: 400px; height: 75px;}
 #slideshow div { position: absolute; display: none; top: 0; left: 0; width: 400px; height: 75px;}
 .i0  { filter: alpha(opacity=  0); -moz-opacity: 0.00; opacity: 0.00;}
 .i1  { filter: alpha(opacity= 10); -moz-opacity: 0.10; opacity: 0.10;}
 .i2  { filter: alpha(opacity= 20); -moz-opacity: 0.20; opacity: 0.20;}
 .i3  { filter: alpha(opacity= 30); -moz-opacity: 0.30; opacity: 0.30;}
 .i4  { filter: alpha(opacity= 40); -moz-opacity: 0.40; opacity: 0.40;}
 .i5  { filter: alpha(opacity= 50); -moz-opacity: 0.50; opacity: 0.50;}
 .i6  { filter: alpha(opacity= 60); -moz-opacity: 0.60; opacity: 0.60;}
 .i7  { filter: alpha(opacity= 70); -moz-opacity: 0.70; opacity: 0.70;}
 .i8  { filter: alpha(opacity= 80); -moz-opacity: 0.80; opacity: 0.80;}
 .i9  { filter: alpha(opacity= 90); -moz-opacity: 0.90; opacity: 0.90;}
 .i10 { filter: alpha(opacity=100); -moz-opacity: 1.00; opacity: 1.00;}
</style>


<script type="text/javascript">
// Egel 070919 ;)

var count = 0, timer = 0, slides = '', slideCount = 0;

function addSlide(url,img,alt) {
 if (!alt) alt = url;
 slides += '<div id="slide_' + slideCount + '" class="i0"><a href="http://' + url + '/" title="' + alt + '" target="_blank"><img src="' + img + '" border="0" width="400" height="75" /></a></div>';
 slideCount++;
 };

addSlide('www.dirkzwager.nl','/img/dirk.jpg');
addSlide('www.cms-dsb.com','/img/cms.jpg');
addSlide('www.loyensloeff.com','/img/loyens.jpg');
addSlide('www.nautadutilh.com','/img/nauta.jpg');
addSlide('www.adverteren.nl','/img/adverteren.jpg','adverteren');

function slideshow() {
 if (timer == 0) {
  document.getElementById('slide_' + count).style.display = 'none';
  count++; if (count >= slideCount) count = 0;
  document.getElementById('slide_' + count).style.display = 'block';
  };
 if (timer < 10) {
  document.getElementById('slide_' + count).className = 'i' + (timer + 1);
  };
 if (timer > 40) {
  document.getElementById('slide_' + count).className = 'i' + (50 - timer);
  };
 timer++; if (timer > 50) timer = 0;
 };

function startSlideshow() {
 document.getElementById('slideshow').innerHTML = slides;
 setInterval('slideshow()',125);
 };

window.onload = startSlideshow;

</script>


</head>
<body>

<div id="slideshow"></div>

</body>
</html>
Een advertentie toevoegen doe je met:
addSlide('website','plaatje','alt-tekst');
De alt-tekst kun je ook weglaten, dan wordt daarvoor de website gebruikt.

De rest gaat vanzelf. Ze worden om de beurt weergegeven met in- en outfaden en het werkt in IE, Fx en Opera. :)

De tijd is evt. aan te passen door 125 te veranderen in setInterval('slideshow()',125);


Vr.Gr. Egel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan