Newsgroup: it.comp.lang.javascript
Titolo: array e IE

Ciao a tutti!
Ho questo pezzetto di codice:
var titolari = new Array();
function addGiocatore(cod, ruolo, nome)
{
	if (titolari.length < 11)
	{
		titolari[titolari.length] = cod;
		GetRef('titolare'+titolari.length).innerHTML = nome;
	}
...
Ad ogni click del mouse su un link, mi viene messo il nome del giocatore 
all'interno di un campo identificato da quello che sta all'interno di GetRef 
(funzioncina presa da criosoftware :)))...
Con FF tutto ok, funziona alla grande...
Con IE NO!
In una squadra di calcio ci sono 11 giocatori... su IE mi riempie correttamente 
i primi 9 campi (da 1 a 9) quando il titolari.length arriva a 10 puff 
magicamente non riempie piu' nulla e mi da un "Unknown runtime error"...
La javascript console di firefox non da nessun errore e nessun warning, e come 
detto su di lui tutto va alla perfezione...
Come mai su IE la doppia cifra non e' gradita??
Grazie a tutti!!
Viandante

 		GetRef('titolare'+titolari.length).innerHTML = nome;
Qua invece l'array è a base zero, penso ti serva una 
 GetRef('titolare'+(titolari.length-1)).
Non vedo altri "errori" così a naso (ma ho dormito 2 ore, sich!)
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 
I campi da riempire iniziano da titolare1 fino a titolare11, per questo 
inserisco prima il codice, in modo da avere già un elemento nell'array che mi 
porta la length a 1.
Praticamente cosa fa: all'inizio la length e' 0 quindi aggiunge il codice del 
giocatore cosi' la length passa a 1 e con il GetRef referenzio il campo giusto 
(titolare1). Al giro successivo la length e' 1, aggiungo il codice cosi' diventa 
2 e vado su titolare2 ecc... quando la length e' 10 aggiungo il codice che me la 
fa arrivare a 11 e va su titolare11...
Ripeto, su ff va tutto e non dà nessun warning...
Ho provato a spezzare gli array in difensori, centrocampisti e attaccanti... la 
cosa buffa e' che per difensori e centrocampisti va (parlo sempre di IE perche' 
su FF va sempre) mentre per gli attaccanti, che sono al max 3, mi da sempre 
quell'errore "Unkown runtime error".
Sob...
Viandante

 I campi da riempire iniziano da titolare1 fino a titolare11, 
Ah ok, ecco il perchè.
Non so aiutarti, sorry...puoi postare un esempio semplificato al massimo
con l'errore rilevato?
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 
Ehm... l'esempio semplificato in che senso? posso dirti che flusso fa... ho 
messo degli alert per vedere che la length non impazzisca di botto ma e' tutto ok...
L'errore l'ho detto "Unknown runtime error"... un po' generica come cosa :) 
pero' e' l'unica info che ho sull'errore... niente di piu'...
Che sia un problema di inizializzazione? Magari per IE devo dirgli a priori la 
dimensione dell'array? ... no... provato :(
uff... obbligo tutti a usare FF!!!!
Viandante

 dimensione dell'array? ... no... provato :(
Assolutamente no, è una delle grosse comodità di javascript!
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 L'errore l'ho detto "Unknown runtime error"... un po' generica come cosa :) 
Non del tutto. Quel tipo di errori viene sempre in particolari casistiche,
ovvero se si sta facendo qualcosa di particolarmente fuori dagli "schemi".
Per questo credo che la cosa sia ben più profonda di quanto il codice
iniziale lascia supporre.
Poi, se ho ben capito, l'errore ti viene dato anche se "splitti" la logica
in array diversi, quindi anche con soli tre elementi, ovvero gli
attaccatti.
Bisognerebbe vedere il codice. Hai modo di pubblicare la parte incriminata
online?
Un'altro suggerimento per il debugging, sarebbe eliminare qualsiasi cosa
che non sia l'aggiunta nell'array dell'elemento. Nel codice da te postato,
questo significherebbe quantomeno eliminare la riga circa il GetRef e
qualsiasi riferimento al DOM.
-- 
~ "Nell'anno 1969 è bastata la potenza di calcolo di due Commodore 64 per
mandare con successo una navicella sulla Luna. Nell'anno 2003 è
necessario un Pentium 4 a 2000 Mhz per far funzionare Windows XP.
Qualcosa deve essere andato storto."

 L'errore l'ho detto "Unknown runtime error"... un po' generica come cosa :) 
Non del tutto. Quel tipo di errori viene sempre in particolari casistiche,
ovvero se si sta facendo qualcosa di particolarmente fuori dagli "schemi".
Per questo credo che la cosa sia ben più profonda di quanto il codice
iniziale lascia supporre.
Poi, se ho ben capito, l'errore ti viene dato anche se "splitti" la logica
in array diversi, quindi anche con soli tre elementi, ovvero gli
attaccanti.


SO UN CRETINO COSMICOOOOOOOOOOOOOOOOOOOOO
Scusate per avere rotto le scatole... problema risolto... c'era un name uguale 
ad un id ma di due campi differenti!!!
Come al solito era una gran vaccata...
Scusate ancora...
Pero' mi fa strano che FF non mi desse neanche un misero warning...
ok... sorry... mi inginocchiero' sui ceci... eheh
saluti :)
Viandante
ps: il try/catch funziona come per java? io di java so molto poco... :)

 ps: il try/catch funziona come per java? io di java so molto poco... :)
Il try/catch non è supportato dai browser vecchi (js 1.3 per intenderci),
per il resto puoi vederne l'uso qui:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Statements:try...catch
