richiamare 2 volte stessa funzione

  • Creatore Discussione Creatore Discussione kheper
  • Data di inizio Data di inizio

kheper

Nuovo Utente
21 Gen 2015
1
0
0
Ciao a tutti! Non conosco js ma mi trovo a dover modificare una parte di codice in cui viene richiamata una funzione che semplicemente mi fa scorrere delle frasi in un contenitore, inserendo una nuova chiamata alla stessa funzione per un secondo contenitore...

La chiamata originaria e la funzione sono le seguenti:

Codice:
<script type='text/javascript'>
start('box');
</script>



// VELOCITA' TRANSIZIONE NEWS (ESPRESSA IN SECONDI)
var speed = 5;

// VARIABILI GLOBALI (NOTIZIE SARA' L'ARRAY CHE CONTERRA' LE NEWS)
var index = 0;
var limite = 0;
var notizie = null;
var rotazione = null;

// FUNZIONE DA CHIAMARE ALLO START DEL BOX NEWS
function start(id_div){
	var box = document.getElementById(id_div);
	$(box).mouseenter(function(){stop();});
	$(box).mouseleave(function(){play();});
	$('#chiudi').click(function(){ $(box).fadeOut();});
	notizie = box.getElementsByTagName('p');
	limite = notizie.length;
	inizializzazione(notizie);
	newsIn();
}
// FUNZIONE NECESSARIA ALL'INIZIALIZZAZIONE
function inizializzazione(elementi){
	for(i=0; i<elementi.length; i++){
		elementi[i].style.display='none';
	}
}
// FUNZIONE PER NEWS IN INGRESSO
function newsIn(){
	rotazione = setTimeout('newsOut()', (speed*1000));
	$(notizie[index]).fadeIn(1000);
}
// FUNZIONE PER NEWS IN USCITA
function newsOut(){
	$(notizie[index]).fadeOut(1000, function(){
		index++;
		if(index==limite){
			index = 0;
		}
		newsIn();
	});
}
// FUNZIONE PER LO STOP DELL'ANIMAZIONE (ATTIVA AL PASSAGGIO DEL MOUSE)
function stop(){
	clearTimeout(rotazione);
}
// FUNZIONE PER LA RIPARTENZA DELL'ANIMAZIONE (ATTIVA AL PASSAGGIO DEL MOUSE)
function play(){
	clearTimeout(rotazione);
	rotazione = setTimeout('newsOut()', 1000);
}


Quello che vorrei fare è applicare lo stesso effetto anche ad un altro contenitore di frasi (box2) e ho provato in vari modi ma senza nessun risultato:

Codice:
<script type='text/javascript'>
start('box');
</script>

<script type='text/javascript'>
start('box2');
</script>

Messe in questo modo, la prima non funziona (ossia le frasi non scorrono più) e la seconda funziona in maniera errata (compaiono più frasi contemporaneamente).
A me la funzione sembra slegata dal nome del contenitore, quindi chiamandola 2 volte e passandole argomenti differenti mi aspettavo un funzionamento corretto, ma così non è stato... Inoltre per tagliare la testa al toro ho riscritto una funzione identica chiamandola "start2" ed invocandola nel passaggio di 'box2' ma anche in questo caso il funzionamento è errato ed identico al precedente tentativo... quindi mi viene in mente che il problema sia proprio nella funzione che, richiamata 2 volte, genera un qualche tipo di conflitto... ma ahimè nn so che pesci pigliare!
Grazie a tutti se mi darete una mano!
 
Ciao, l'array notizie rimane uguale per entrambe le chiamate alla funzione, per questo ti crea casini.
 

Discussioni simili