Newsgroup: it.comp.lang.javascript
Titolo: Metodo add dell'oggetto Select

Qualcuno mi puņ fornire un esempio di codice correttamente funzionante
relativo all'uso del metodo add dell'oggetto select? Non mi č ben chiaro
l'insieme dei parametri da passare ed il tipo, dato che ottengo un errore di
incompatibilitą di tipi con IE6. Mi servirebbe proprio un esempio pratico e
compatibile con tutti i browser.
Grazie a tutti.
Giuseppe Chielli
ICQ# 322363145

 Grazie a tutti.
Vista la differenza di parametri tra i browser del metodo add 
dell'oggetto select*, io passerei attraverso il suo omonimo in options.
Avendo:
<form name="myFrm"><select name="mySel"><option value="1">prima 
option</option></select></form>
aggiungi una nuova option cosi':
var oSel = document.forms["myFrm"].mySel;
var oOption = new Option("nuova option","2");
oSel.options.add(oOption,0);
Il secondo parametro di add, opzionale, e' la posizione che deve avere 
la nuova option.
* in ie chiamare il metodo add di select equivale a chiamare l'add di 
options. Il mago dei browser a un typeof sui due metodi risponde, 
curiosamente, "object".

 compatibile con tutti i browser.
Questo e' quello bene o male piu' compatibile che puoi trovare.
-- 
ZER0://coder.gfxer.web-designer/
~ "Lo dice il buon senso, ma il buon senso non e' uno standard".
(Jeffrey Zeldman)

 curiosamente, "object".
? Non capisco cosa ci sia di curioso.. mi pare del tutto normale che IE
risponda in quel modo.
-- 
ZER0://coder.gfxer.web-designer/
~ Io non soffro di pazzia, ne godo ogni minuto.
(I don't suffer from insanity, I enjoy every minute of it)

 w3c..? Non riesco proprio a ricordarmelo.
Nella client reference js 1.3 non è menzionato tra i metodi.
C'è però un esplicito esempio su come aggiungere option che copioincollo:
Examples The following example creates two Select objects, one with and one
without
the MULTIPLE attribute. No options are initially defined for either object.
When
the user clicks a button associated with the Select object, the populate
function creates four options for the Select object and selects the first
option.
<SCRIPT>
function populate(inForm) {
colorArray = new Array("Red", "Blue", "Yellow", "Green")
var option0 = new Option("Red", "color_red")
var option1 = new Option("Blue", "color_blue")
var option2 = new Option("Yellow", "color_yellow")
var option3 = new Option("Green", "color_green")
for (var i=0; i < 4; i++) {
eval("inForm.selectTest.options[i]=option" + i)
if (i==0) {
inForm.selectTest.options[i].selected=true
}
}
history.go(0)
}
</SCRIPT>
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 Nella client reference js 1.3 non è menzionato tra i metodi.
La reference js 1.3 non e' riferita agli standard w3c, quantomeno per il
DOM (si riferisce infatti all'epoca di NS4.x).
-- 
ZER0://coder.gfxer.web-designer/
~ "In svizzera noi non avevamo il campeggio, ma il Lager."
(Domenico, durante una discussione sui campeggi per bimbi)

 DOM (si riferisce infatti all'epoca di NS4.x).
:-O
E allora dove dovrei guardare?
Ho guardato nelle specifiche html4.01 del w3 e non è menzionato (ero
curioso di sapere qual è la strada corretta).
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 Ho guardato nelle specifiche html4.01 del w3 
Devi vedere le specifiche del DOM.
-- 
ZER0://coder.gfxer.web-designer/
~ Come devo regolare la stampante laser per stordire?
(How do I set a laser printer to stun?)

 risponda in quel modo.
Si', ma non ricordandomi affatto questo suo comportamento l'ho trovato e 
lo trovo curioso.

 lo trovo curioso.
Vabbe', continuo a non capire :)
-- 
ZER0://coder.gfxer.web-designer/
~ "L'arte non riproduce cio' che e' visibile,ma rende visibile cio' che
non sempre lo e'" (Paul Klee)

 Devi vedere le specifiche del DOM.
Trovato (dom level 1).
Interface HTMLSelectElement
[CUT]
void add(in HTMLElement element,in HTMLElement before);
Le specifiche parla tra l'altro di element come secondo parametro e non
come int per specificare la posizione dove inserirlo.
add
Add a new element to the collection of OPTION elements for this SELECT.
Parameters
element The element to add.
before The element to insert before, or NULL for the head of the list.
This method returns nothing.
This method raises no exceptions.


 come int per specificare la posizione dove inserirlo.
Come del resto hai detto anche te nell'altro post (me l'ero perso).
Se va inserita la option all'inizio penso che passando null come secondo
parametro funzioni con tutti (da verificare che IE non la inserisca di
default in fondo), se va invece inserita da qualche altra parte allora
occorre fare qualche accrocchio (a questo punto meglio usare la tecnica che
hai proposto te)
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 come int per specificare la posizione dove inserirlo.
Infatti l'add dell'oggetto select e' cosi' interpretato da gecko, da qui e'
nato il problema di Giuseppe Chielli sull'incompatibilita' tra tipi (IE
vuole un number, Gecko un riferimento a elemento).
-- 
ZER0://coder.gfxer.web-designer/
~ "Ma non e' che l'ho cancellate, le ho messe nel cestino..!"
(Linda)

 parametro funzioni con tutti
No, IE vuole un numero. Null non e' un numero, e quindi ritorna
"incompatibilita' tra tipi".
-- 
ZER0://coder.gfxer.web-designer/
~ "The demo effect, you don't expect"

 certezza.
No, la HtmlOptionElement non ha metodi associati.
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 No, la HtmlOptionElement non ha metodi associati.
Al limite l'elemento HTMLOptionsCollection, non l'HTMLOptionElement.
Hai dato una sbirciata anche al DOM di livello superiore al primo?
Se cosi' e', probabilmente quelli di mozilla l'hanno inserita per
allinearsi un po' con IE.
-- 
ZER0://coder.gfxer.web-designer/
~ L'ingegnere non vive, funziona.
on air ~ "Maki Kimura - Beyond The Bounds"

 ha scritto nel messaggio
news:309aj9F...@uni-berlin.de...


 ha scritto nel messaggio
news:309aj9F...@uni-berlin.de...


 Fammi sapere.
Sbirciato in tutta fretta: sembra proprio che non sia standard.
Ovvero la collection di options e' una HtmlCollection e non un "tipo 
specifico", e la HtmlCollection non ha nessun metodo add.

 specifico",
Uhm, no, dovrebbe essere di un tipo specifico, ovvero una
HTMLOptionsCollection, e non una HTMLCollection (anche se poi mi pare che
espongano piu' o meno le medesime cose).
-- 
ZER0://coder.gfxer.web-designer/
~ "Ma non e' che l'ho cancellate, le ho messe nel cestino..!"
(Linda)
on air ~ "Maki Kimura - Beyond The Bounds"

 Al limite l'elemento HTMLOptionsCollection, non l'HTMLOptionElement.
HTMLOptionElement è l'unica nominata, HTMLOptionsCollection o simile non è
nominata nel documento.
Guardando HTMLSelectElement si trova una HTMLCollection denominata
"options" ma non dice null'altro, ti rimanda alla definizione di select
html4 (dove non trovo nulla). Ogni tanto fanno girare un po' troppo per
trovare anche delle semplici info IMHO.
Ho però il pdf del dom livello 1, non ho guardato gli altri.


 Ho però il pdf del dom livello 1, non ho guardato gli altri.
Eh no.. devi guardare almeno il DOM level 2. La Technical Reference la
trovi sul sito del w3c; eventualmente ci butto un'occhiata io appena ho i
cinque minuti di cui sopra (voglio prima terminare un "percorso logico", se
lo interrompo a meta' e' finita).
-- 
ZER0://coder.gfxer.web-designer/
~ "Ma non e' che l'ho cancellate, le ho messe nel cestino..!"
(Linda)
on air ~ "Maki Kimura - Beyond The Bounds"

 lo interrompo a meta' e' finita).
E perché? A logica, dico io, se uso le specifiche del level 1 spero siano
sottospecifiche dei livelli superiori...
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 sottospecifiche dei livelli superiori...
Ed e' per questo che e' normale che tu possa non trovarci qualcosa che
invece e' attualmente supportato.
Il DOM level 1 e', nella migliore delle ipotesi, un "sottoinsieme" delle
specifiche del level 2; il che significa che se qualcosa non lo trovi nel
DOM level 1, non significa che non sia standard; perche' puo' darsi che
l'abbiano introdotto nel DOM level 2 (vedasi ad esempio
l'HTMLOptionsCollection, giusto per fare un esempio).
Inoltre dovresti saperlo che passando di versione, non e' affatto
matematico che la successiva implementi tutte le cose della precedente nel
medesimo modo.
P.S.
Ho controllato, pare non esserci neppure nell'HTMLOptionsCollection il
metodo add; almeno nel DOM Level 2.
-- 
ZER0://coder.gfxer.web-designer/
~ "Compiere l'impossibile e' impresa che risiede nel cuore degli uomini"
(Mariners and generals)


 l'HTMLOptionsCollection, giusto per fare un esempio).
Ok
Ma se voglio sviluppare per IE>=5.0, netscape>=6.0 e tutti i browser Gecko
cosa devo guardare? Io guardo il level 1 perché (dico, anzi dicevo) almeno
"dovrebbe" funzionare più o meno correttamente. Salendo di livelli temo
salgano i disastri con IE.
Comunque non è nominato neanche nella documentazione di xul:
http://xulplanet.com/references/objref/HTMLOptionsCollection.html
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 Comunque non è nominato neanche nella documentazione di xul:
Ehm, che c'entra mo' XUL?


 Ehm, che c'entra mo' XUL?
Cercavo questa collection e ho trovato questo...piů o meno dovrebbe essere
il comportamento del suo motore interno (o no?) (non trovo mai una
documentazione decente per mozilla all'interno del loro sito)
