Newsgroup: it.comp.lang.javascript
Titolo: Refreshare banner ogni 4 secondi. Come fare?

','<img src="/banners/secondo.gif" border=0 >','<img
src="/banners/terzo.gif" border=0 >','<img src="/banners/quarto.gif"
border=0 >',..etc)
Sapreste come fare a creare un javascript che faccai questo?
La cosa difficile è fare in modo ad ogni refresh vengano pescati a caso 4
banner dei venti dell'array ma evitando che all'interno dei 4 pescati a
caso ne vengano pescati 2 uguali. (I quattro banner pescati dall'array
devono essere tutti diversi)
<img id="" src="">
<img id="" src="">
<img id="" src="">
<img id="" src="">
Marco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 devono essere tutti diversi)
prototipo:
 a) con setTimeout esegui ogni X ms la function che effettua il refresh:
 
http://developer.mozilla.org/en/docs/DOM:window.setTimeout
 b) nella tua function ripeterai 4 volte:
   - estrai un numero random compreso tra 0 e la lunghezza dell'array
(ventibanner.length):
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Math:random
 c) verifichi che l'src non sia uguale all'src di uno dei 4 banner
(altrimenti torni al punto b)
 d) assegni l'src all'immagine
-- 
"La realtà è un'illusione causata dall'assenza di alcool."
									      A.

Grazie Cristiano per gli utili suggerimenti,
Purtroppo in javascript non ho competenze.. e non sono in grado di fare lo
script da te indicato.
Sapresti indicarmi una risorsa dove possa trovare questo codice?
Grazie ancora.





-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 Sapresti indicarmi una risorsa dove possa trovare questo codice?
no, anche perché è veramente semplice.
comunque sia: setTimeout example:
http://www.google.it/search?sourceid=navclient&aq=t&hl=it&ie=UTF-8&rlz=1T4GGIH_itIT217IT217&q=setTimeout+example
javascript Math.Random example:
http://www.google.it/search?hl=it&rlz=1T4GGIH_itIT217IT217&q=javascript+Math.Random+example&meta=
Per recuperare un riferimento alle 4 immagini: gli assegni un id, poi
 
http://developer.mozilla.org/en/docs/DOM:document.getElementById
 
http://www.criosoftware.it/default14.aspx
Per avviare il setTimeout usa l'evento onload di window:
 <script type="text/javascript">
  window.onload=function() {
   setTimeout(...);
  }
 </script>
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

A semplice modo didattico
la stessa cosa si può fare
molto meglio e in 27000 modi
differenti ; tanto per darti un idea visto
che sei a digiuno di js capirai
che a spiegarti lo script pari passo è
un po lunga quindi ti consiglio di guardarti
i links di Cristiano Larghi
<html>
<head><title>Using more DOM</title>
<script type="text/javascript">
var pimg = [['uno0.gif','uno1.gif','uno2.gif','uno2.gif'],
['uno0.gif','uno1.gif','uno2.gif']];
var count= 0;
function changeImage(){
	var target= document.getElementById('boxImg');
	if(count >= pimg.length){
		count=0;
	}
	var row= pimg[count];
	var  p= document.createElement('p');
	for(var i=0;i<row.length;i++){
		var newImg=document.createElement('img');
		newImg.setAttribute("src",row[i] );
		p.appendChild(newImg);
	}
	if(target.firstChild != null){
		target.removeChild(target.firstChild);
	}
	target.appendChild(p);
	window.setTimeout(changeImage,2000);
	count++;
}
function preloadImgs(path) {
		var temp=new Image();
		temp.src=path;
}
window.onload= function()
{
	for(var i=0;i<pimg.length;i++){
		for(var j=0;j<pimg[i].length;j++){
			preloadImgs(pimg[i][j]);
		}
	}
changeImage();
}
</script>
</head>
<body>
<div id="boxImg"></div>
</body>
</html>

 che a spiegarti lo script pari passo č



 es.
Spinto è solo un esempio didattico
non ho IE 7 sotto mano ma se andasse in
confusione con uno script simile saremmo tutti
nella m.... avrai commesso altri errori.

whisher lo so che sembrerà strano ma in Firefox è tutto Ok invece Explorer
7 da problemi: le immagini non hanno larghezza 120px, etc..
In pratica tutti gli attributi del tag IMG non li considera:
newImg.setAttribute('style','display:block;width:120px;border:5px;margin:20px;');
Posto tutto il codice così così puoi verificare di persona:
<html>
<head><title>Using more DOM</title>
<script type="text/javascript">
var pimg =
[['
http://www.windoweb.it/desktop_foto/foto_auto/foto_auto_035.jpg
','
http://www.windoweb.it/desktop_foto/foto_auto/foto_auto_029.jpg
','
http://www.prestigeautoravanusa.it/img/auto.gif
','
http://ferrari.bg2.org/img/F40.jpg'
],
['
http://www.amiciamici.com/wp-content/uploads/2007/01/moto2.jpg
','
http://www.windoweb.it/desktop_foto/foto_moto/foto_moto_026.jpg
','
http://www.windoweb.it/desktop_foto/foto_moto/foto_moto_517.jpg']
];
var count= 0;
function changeImage(){
var target= document.getElementById('boxImg');
if(count >= pimg.length){
count=0;
}
var row= pimg[count];
var p= document.createElement('p');
for(var i=0;i<row.length;i++){
var newImg=document.createElement('img');
newImg.setAttribute("src",row[i] );
newImg.setAttribute("alt",'spoispoifspoif' );
newImg.setAttribute('style','display:block;width:120px;border:5px;margin:20px;');
p.appendChild(newImg);
}
if(target.firstChild != null){
target.removeChild(target.firstChild);
}
target.appendChild(p);
window.setTimeout(changeImage,4000);
count++;
}
function preloadImgs(path) {
var temp=new Image();
temp.src=path;
}
window.onload= function()
{
for(var i=0;i<pimg.length;i++){
for(var j=0;j<pimg[i].length;j++){
preloadImgs(pimg[i][j]);
}
}
changeImage();
}
</script>
</head>
<body>
<div id="boxImg"></div>
</body>
</html>
whisher ha scritto:




>newImg.setAttribute('style','display:block;width:120px;border:5px;margin:20px;');
Questa sintassi sinceramente non l'ho mai vista (anche se a rigor di
logica
non dovrebbe essere errata)
ad ogni modo
fai prima a fare una cosa del genere
newImg.className='newimg';
naturalmente al posto di newimg ci puoi mettere
quello che vuoi e devi dichiarare la classe nel foglio
di stile.
Ciao.

 Ciao.
