problema con elementi della funzione

macroboss

Nuovo Utente
17 Feb 2014
2
0
0
Salve a tutti,
mi trovo davanti un problema che, considerato il mio basso livello di conoscenza nel campo javascript, mi risulta insormontabile.
Il codice "incriminato" è il seguente:
HTML:
function elabora(){ // up prezzo , id gruppo , classe oggetti display block , oggetti multipli display none
	var up = arguments[0];
	var id = arguments[1];
	len = arguments.length - 3;
	for(var a = 1; a <= 10; a++){
		ogg = (arguments[2] + a); // i tag html hanno id [nome][num]
		document.getElementById(ogg).style.display = "block";
	}
	for (var i = 3; i < len; i++) {
		document.getElementById(arguments[i]).style.display = "none"; // blocco
		alert('test');
	}
	change_prezzo(up, id);
}
La parte che mi crea il blocco dello script è quella in cui si elabora l'argomento della funzione da passare in display none. Inserendo infatti un alert subito prima, si visualizza normalmente, mentre l'alert "test" non viene stampato, e il ciclo, assieme a tutto lo script, si interrompe.
Dove sbaglio?
Grazie infinite
 
Forse così:
Codice:
function elabora(){ // up prezzo , id gruppo , classe oggetti display block , oggetti multipli display none
	var up = arguments[0];
	var id = arguments[1];
	var len = arguments.length; // Ho aggiunto var vicino a len ed ho tolto - 3 perché tanto nel secondo ciclo la variabile i parte già da 3 quindi i primi 3 elementi non vengono contati. Quindi il ciclo parte dal quarto elemento di arguments[] 
                                              // fino ad arrivare all'ultimo.
                                              // Invece se lasci - 3 il secondo ciclo arriva fino al quartultimo elemeno.

	for(var a = 1; a <= 10; a++){
		ogg = (arguments[2] + a); // i tag html hanno id [nome][num]
		document.getElementById(ogg).style.display = "block";
	}
	for (var i = 3; i < len; i++) {
		document.getElementById(arguments[i]).style.display = "none"; // blocco
		alert('test');
	}
	change_prezzo(up, id);
}
Vedi però non so se è quello che vuoi tu!
 
Grazie per la risposta,
Il -3 l'ho inserito semplicemente per contare il numero di parametri passati, ad esclusione appunto dei primi 3, che sono sempre fissi ed esistono sempre.
La variabile len mi serve per calcolare il numero di parametri rimanenti passati alla funzione.

In ogni caso, non funziona neanche togliendo il - 3.
 
allora forse qua:
Codice:
document.getElementById(arguments[i]).style.display = "none"; // blocco
non va bene l'id.. tu infatti nel primo ciclo fai questa cosa:
Codice:
ogg = (arguments[2] + a); // i tag html hanno id [nome][num]
document.getElementById(ogg).style.display = "block";
mentre nel secondo ciclo solo come ho scritto sopra.. forse devi fare la concatenazione di arguments con la variabile a come al primo ciclo! poi non so.. comunque se tu vuoi escludere i primi 3 parametri nel secondo ciclo allora il -3 lo devi togliere perché sennò così oltre ad escludere i primi 3 escludi anche gli ultimi 3 xD
 

Discussioni simili