Newsgroup: it.comp.lang.javascript
Titolo: Array e NS

Ciao a tutti,
ho un problema con gli array e NS, sapete dirmi perchè con NS non riesco a
caricare in una listbox un elenco definito attraverso un array? Con IE tutto
funziona correttamente. Dove sbaglio?
Grazie in anticipo per le risposte.
Cooper.

 Grazie in anticipo per le risposte.
E' piu' facile che riusciamo ad indicarti "dove" sbagli, se ci posti il
codice che usi.
Inoltre, anche se non e' questo il caso, e' utile sapere a che versione di
NS ti riferisci: 4.x?6/7?
--------------------------------
Inviato via 
http://usenet.libero.it


Il codice di esempio č il seguente:
   gruppo = new Array ()
   gruppo[0] = new Array("A","1")
   gruppo[1] = new Array("B","2")
   gruppo[2] = new Array("C","3")
   pgruppo = gruppo.length
<div id="Layer3" style="position:absolute; width:301px; height:31px;
z-index:2; left: 2px; top: 43px">
  <select name="gruppo" size="1">
    <script>
     for(i=0; i<pgruppo; i++) { document.write('<option
value='+i+'>'+gruppo[i][0]+'</option>') }
   </script>
 </select>
</div>
Naturalmente il tutto č all'interno di un form etc etc, qui ho evitato di
mettere il resto perchč non č significativo, va detto solo che se io eseguo
lo spezzone di codice insieme al resto su explorer tutto funziona
correttamente e nella listbox appaiono i dati che mi servono come dovrebbero
essere.
Se faccio lo stesso con netscape, invece č come se non leggesse nulla,
infatti la listbox č completamente vuota.
Cooper.
PS: La versione non č importante, ciň che conta č che sia visibile su piů
broswer netscape di versioni diverse... io uso la 7 (4.71) ma se si puň
anche per le piů datate ancora meglio.

    pgruppo = gruppo.length
</script>


 ha scritto nel messaggio
news:atk6u0$14lq6v$1...@ID-147253.news.dfncis.de...

Ho omesso volontariamente, ma ripeto, che funzioni su explorer quello si, li
va tutto bene il problema è su netscape, che non carica i valori... ma a
livello sintattico o cosa non ci sono errori.
Sicuramente devo fare degli accorgimenti per netscape... ma non so quali :(
Cooper.

 mettere il resto perchè non è significativo
Okay. Se ho capito bene, ed il form sta al di fuori del DIV, il problema e'
chiaro ed e' una delle prime cose sulle quali una persona che sta
incominciando lo studio del JS cross-browser (soprattutto usando il DHTML, o
cmq layers) si scontra.
In NS 4.x i layer (ovvero i tag <LAYER>,<ILAYER>,<DIV> con
position:absolute, relative, etc) sono considerati "document" a se' stanti.
Questo significa che per NS la tua "select" sta in un documento "diverso"
dal tag "form" a cui tu l'hai "assegnata".
Per questo, il codice te lo esegue correttamente, ma non ti visualizza la
select perche' secondo NS e' senza un form genitore.
Per risolvere il problema devi cambiare approccio. O levi il LAYER, e poni
la select nello stesso livello della form a cui appartiene, oppure metti il
tag form DENTRO il layer.
Come ti ho detto, la gestione dei layer in NS4 come documenti diversi, e'
una delle prime cose con la quale ci si scontra.. soprattutto per i rollover
e accesso ai vari figli.
Ad esempio, se tu volessi accedere ad un immagine chiamata "myimage", che
sta dentro un layer, nella maggior parte dei browser ti basta fare:
document.images["myimage"]
Ovvero accedere alla collection "mages" che contiene tutte le immagini
presenti nel documento.. Mentre in NS4.x, visto che per lui un layer E' UN
ALTRO documento, document.images ti restituirebbe SOLO la lista delle
immagini presenti nella "root" del documento.. per accedere a "myimage",
contenuta, chesso', in un livello chiamato "mylayer" dovresti fare:
document.layers["mylayer"].images["myimage"]
Idem per forms e tutto il resto:
document.layers["mylayer"].forms["myform"]
etc..



CUT
spetta, io non posso mettere il tag FORM dentro un livello.
Il tag FORM racchiude più listbox dove verranno presi dall'elenco dei valori
che poi saranno trasferiti altrove per essere elaborati.
Ogni listbox a sua volta ricava i valori da un array del tipo di prima.
L'elenco di array per
le varie listbox deve rimanere separato dal resto del modulo
mmm forse intendi... cioè di creare un livello e a questo asssegnarlo al
form e poi all'interno di questo livello associare i sottolivelli che
saranno abbinati alle rispettive listbox?
Cooper

ripeto: con netscape 6.2 il codice che hai postato funziona egregiamente

 saranno abbinati alle rispettive listbox?
Non ti ho detto la soluzione, quanto esposto il problema ed i possibili
approcci, poi dipende da com'e' strutturata la pagina, scegliere il da
farsi.
Inoltre, sinceramente, non ho capito dal "forse intendi.." in poi, ma e'
normale perche' oggi sto dormendo in piedi ^_^"
Quel che volevo cmq farti capire era la ragione per cui il tuo codice dava
quel tipo di errore. Ovvero che la select sta in un layer, ed il tag form ne
sta al di fuori. In questo modo Netscape 4.x non vede la select perche' per
lui stiamo in un altro documento.
La soluzione semplice e' quindi: Portare il tag form e select sullo stesso
"piano", nello stesso "documento". Per fare questo, o elimini il layer che
li separa, oppure li metti entrambi nello stesso layer.
Il tipo di approccio da usare, dipende da come hai costruito la pagina.


 ripeto: con netscape 6.2 il codice che hai postato funziona egregiamente
Si sta parlando di Netscape 4.7.


aaahhhhh
ho letto: "io uso la 7 (4.71)"
(e ho letto fino al 7, quindi ho fatto qualche test con 6.2)

 (e ho letto fino al 7, quindi ho fatto qualche test con 6.2)
.. Immaginavo fossi caduto in tale inganno.. :)
E cmq la problematica e' abbastanza esplicita (quel tipo di problema si puo'
avere solo su NS4.x che considera i layer documenti a se' ).


eh, infatti avevo fatto qualche test proprio perché mi sembrava molto
strano.
p.s. (e mega [OT], di quelli proprio da vergogna): 2° torneo di scacchi
"Cassinetta di Lugagnano"...primoooooooooooo!!!! (ohhhhyeah, li ho
sterminati!)

 sterminati!)
Uheeee :D .. e ti lamentavi che erano molto piu' bravi di te.. tsk.. :P La
modestia e' una qualita' molto sopravvalutata.. :)


eheh
ne ero in effetti convinto...però sto recuperando adesso, in quanto "a
modestia": sono er mejooooo!!!! :-))
Vabbè, chiudiamo qua il thread che siamo metaOT