Newsgroup: it.comp.lang.javascript
Titolo: getElementById

Cari amici ciao,
vorrei dei chiarimenti su "getElementById".
Nei libri che ho letto non  spuntano riferimenti.
E' una funzione?
E' standard?
Come si usa?
Penso che abbia a che farecon la creazione di un menů a tendina compatibile
con IE e Ns
Penso dovrei usare questa funzione....
Ho provato come riportato nei libri, ma non funziona con netscape:
<SCRIPT LANGUAGE="JavaScript">
 function showOrHide(value) {
    if (value==0) {
        if (document.layers)// se l'oggetto layers esiste (solo netscape)
allora:
           document.layers["layer3"].visibility='hide';
        else  // se il browser č explorer l'oggetto layers non esiste,
quindi:
           document.all["layer3"].style.visibility='hidden';
   }
   else if (value==1) {
       if (document.layers)
          document.layers["layer3"].visibility='show';
       else
          document.all["layer3"].style.visibility='visible';
   }
}
<DIV ID="layer3" style="position:absolute; LEFT:35; TOP:210;
 background-color:orange; width:50; height:50;
 visibility:hidden">
  Questo layer non si vede per default, ma puo essere visto mediante
JavaScript.
</DIV>
Ho provato anche con il tag <layer name=""> ma non funziona
Grazie per la vostra collaborazione



 Ho provato anche con il tag <layer name=""> ma non funziona
Il tag layer č riconosciuto solo da NS4
Maurizio.

     }
Attenzione: opera in ie mode risponde true a document.all
MA non supporta correttamente document.all
(il che secondo me č una CAGATA pazzesca, ma cmq...)
Perciň correggi (document.all) in (document.all&&!window.opera),
ovvero:
    function showOrHide(value) {
        var obj;
        var showhide = value ? "visible": "hidden";
        if (document.layers)
            obj = document.layers["layer3"].visibility = showhide;
        else {
            if (document.all&&!window.opera)
                obj = document.all["layer3"];
            else if (document.getElementById)
                obj = document.getElementById("layer3");
            else
                return;
            obj.style.visibility = showhide;
         }
    }
In alternativa puoi invertire le due condizioni...
MaRoK

 In alternativa puoi invertire le due condizioni...
che forse è anche meglio, anche perché, come dice ZER0, se IE5 e 6
supportano getElementById perché non usarlo?
Maurizio.

 
ciao sono Alessandro
getElementById ti permette di camminare attraverso il DOM fino
all'oggetto
che tu specifichi all'interno delle parentesi
es:
document.getElementById('IdTuoOggetto').proprietà etc etc;
oppure
var RIFERIMENTO=document.getElementById('IdTuoOggetto');
RIFERIMENTO.proprietà etc etc;
per quanto riguarda i LAYER sono un pò una rogna poichè solo il
dom di NN4 li supporta e se il tuo problema è la compatibilità
sicuramente farai un pò di fatica.
La riga di codice che ti ho scritto viene supportata da IE5.x e NN6.x
IE supporta anche document.all.IdOggetto.etc etc
se non ti è ancora chiaro all'indirizzo 
http://pro.html.it
 ci sono un 
mucchio di articoli utili 
cia' 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 che tu specifichi all'interno delle parentesi
Ne approfitto: non riesco manco scannato a farmi restituisce la
collection...cioè: se ho N id=pippo mi aspetto che
document.getElementById('pippo').length mi restituisca N...e invece niente
(non ricordo se restituisce 0 o cos'altro)...
Sbaglio qualcosa?
E' giusto così?
Sono io che quando avevo provato ero brasato?
(Tra l'altro avevo avuto problemi anche con getElementsByTagName a farmi
restituire la collection, ma se non sbaglio solo con input type=radio).
Era una intranet e avevo risolto col classico
document.all('nome',posizione), però, per curiosità e sviluppi futuri...
Grazie

 Sbaglio qualcosa?
Yes.
Secondo IE document.getElementById("pippo") ti restituisce il primo elemento
che si chiama pippo. Se "pippo" e' il nome di una collection ti restituisce
il primo elemento della collection.
Secondo Gecko "pippo" deve essere univoco (non ho provato, ma ormai puo'
anche darsi che si comporti come ie).
Per quello che vuoi fare tu c'e' document.getElementsByName (IE / Gecko).


se non ricordo male avendo tag con lo stesso indice
tu ti troverai una collection che si chiama proprio con lo stesso nome
es:
se i tuoi tag hanno tutti id=pippo
potresti raggiungere l'elemento che ti serve scrivendo
document.pippo[indice].proprietà etc etc;
(ovviamente l'indice corrisponde all'ordine di scrittura nella pagina)
cmq mi hanno sempre insegnato ad avere più tag con lo stesso NOME
poichè l'indice (anche se non da errore) è sempre meglio averlo 
univoco
ciao 


 Secondo Gecko "pippo" deve essere univoco
No, anche Gecko si comporta come l'engine di IE. Puoi avere piu' di un ID,
ergo una collection, ma document.getElementById ti restituisce sempre e solo
la prima occorrenza trovata, ergo il primo elemento della collection.
--------------------------------
Inviato via 
http://usenet.libero.it

 Sono io che quando avevo provato ero brasato?
No, probabilmente avevi usato il document.all di IE. a parita' di HTML
(esempio, dodici DIV con ID=pippo):
alert(document.getElementById("pippo").length) -> undefined
alert(document.all["pippo"].length) -> 12
Se vuoi mantenerti cross-browser puoi fare come dice Andrea, ricordandoti
pero' di aggiungere oltre l'ID l'attributo "name" ai tuoi oggetti,
altrimenti Gecko non gradisce.


> Per quello che vuoi fare tu c'e' document.getElementsByName (IE / Gecko).
Esiste? (conoscevo solo getElementsByTagName).
Se è un errore di battitura: non ero riuscito ad usarlo con radio (aventi
name uguali)...
Se non è un errore di battitura: avevo provato ad "inventarmi" ai tempi
getElementByName, forse appunto non mettevo la s e quindi non mi funzionava?
Grazie

 la prima occorrenza trovata, ergo il primo elemento della collection.
Eggià, lo avevo dedotto...però, che stupidata non restituire la
collection....
Leggo che addirittura, se non trova l'id "pippo" ma trova p.e. un "pipp", ti
referenzia questo...ancora più assurdo IMHO.

 getElementByName, forse appunto non mettevo la s e quindi non mi
funzionava?
Direi. Se vuoi una collection, devi usare il plurale, no? ;)


 referenzia questo...ancora piů assurdo IMHO.
Dopo averlo scritto mi sono detto "questa č grossa, mi insulteranno,
postiamo anche la pagina dove l'ho letto..." e non lo trovo piů.
Non vorrei quindi aver letto una gran c@!"34@ata, va testato.


Ottima inventiva, peccato per il plurale...
Io, dal canto mio, sono ancora affezionato alla sintassi standard (a meno
che tu non abbia radio con lo stesso name su form diversi...)

 referenzia questo...ancora più assurdo IMHO.
In effetti questo puo' essere fuorviante. Ma tale comportamento ce l'ha sia
IE che Gecko, ergo deriva da raccomandazioni W3C.. chissa' perche', cmq, e'
stata pensata una cosa del genere.


> Direi. Se vuoi una collection, devi usare il plurale, no? ;)
Beh beh, getElementById non ha la s .... scriviamo agli 'gnurant del W3C ?
:-))

 stata pensata una cosa del genere.
ahhh, allora è vero...
sto cercando documentazione su questa gran cazzata ma non la trovo,
cominciavo a pensare di aver bisogno di una vacanza...



perche'?
prendil'elementochehaperid('pippo')

 Beh beh, getElementById non ha la s .... scriviamo agli 'gnurant del W3C ?
Cristiano, quasi mi consola che oggi non solo il solo (non si e' visto ma
anche lo Zer0...):
abbiamo appena detto che non restituisce una collection e, se la trova, ne
restituisce il primo elemento.


Trovala in fretta. Dopodiche' due casi:
a) la trovi, e partiamo tutti in spedizione punitiva verso chi ha scritto
l'articolo
b) non la trovi, e voglio andare anche io dal tuo spacciatore

 stata pensata una cosa del genere.
Spiegati.
Copio/incollo da
http://www.w3.org/TR/2002/WD-DOM-Level-3-Core-20021022/core.html#ID-getElBId
:
getElementById introduced in DOM Level 2
Returns the Element that has an ID attribute with the given value. If no
such element exists, this returns null. If more than one element has an ID
attribute with that value, what is returned is undefined.
To define an attribute of type ID see the setIdAttribute method and its
siblings on Element. To query whether an attribute is of type ID see isId on
Attr.
Note: Attributes with the name "ID" or "id" are not of type ID unless so
defined.
Parameters
elementId of type DOMString
The unique id value for an element.
Return Value
ElementThe matching element or null if there is none.
No Exceptions

 cominciavo a pensare di aver bisogno di una vacanza...
A me basta un bel sonnellino..
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 Spiegati.
Fatto nel post di Cristiano. Il concetto e' che manca un "se".. 


 :-))
Essi'.. hai proprio bisogno di una vacanza.. :) getElementById non ha la 
"s" proprio perche' restituisce un elemento singolo.. ;)


 b) non la trovi, e voglio andare anche io dal tuo spacciatore
Niente, non la trovo; eppure ricordo ai tempi di aver fatto anche un test
sull'argomento...forse un bug di ie5.0 ? boh...
Oppure il mio fornitore ha robba bbuona??? Non so... :-)
Dimenticate questo messaggio, se trovo dove l'avevo letto lo riprendo.

Aggià...
ieri giornata particolare (dimissionario), capitemi... :-/

Mah...giustamente dico "aggià è giallo...e allora e nero!"....influssi della
politica odierna? :-/
Ieri giornataccia, pardon a tutti, mi resetto, cambio ram e torno.

 ieri giornata particolare (dimissionario), capitemi... :-/
E' veroooo...!! Ma quando inizi dall'altra parte..?


Ultimo giorno il 15/02 (ho scoperto che le dimissioni partono solo dall'1 o
dal 16 del mese, pensa te che non lo sapevo...partono quindi da domani).

Tra l'altro il nuovo lavoro č a Arese, siamo a 2 passi, no?

 dal 16 del mese, pensa te che non lo sapevo...partono quindi da domani).
Dai, forza e corraggio. :) Ma riparti subito a "bomba" domani con il nuovo
lavoro? Magari mo' passo in email (rispondendoti a quella che mi hai mandato
tempo addietro..)


 Tra l'altro il nuovo lavoro č a Arese, siamo a 2 passi, no?
Booooh.. lo sai che geograficamente sono una schiappa. :) Diciamo che il
cartello "Arese" le vedo ogni tanto quando torno verso casa da Firenze..
^_^"
.. Cmq sto pensando di cercare casa altrove. Spendo veramente troppo.. E poi
vorrei un po' di vita sociale in piu'. Qualche consiglio..?


Sì, finisco il 14/02 (sabato), parto di là il 16/02.
D'altronde mi sono fatto 16 gg di ferie a Natale, mica si può pretendere
tutto dalla vita (magari...)

 vorrei un po' di vita sociale in piu'. Qualche consiglio..?
Mah...vita sociale mi sa che devi andare a Milano (che però io aborrrrro);
però non pensare di spendere di meno (trilocale fuori milano=monolocale in
milano, come costi).
Eppoi io non sono uno da vita sociale, ho il mio giro di
beoni-mangioni-giocatori di carte-scacchisti e mi basta...
Siamo clamorosamente e vergognosamente OT...ma anche questo ha il suo bello
ogni tanto, no? :-)

Webmaster wanted in Italy
www.comserver.net

 ogni tanto, no? :-)
Eh gia'.. sai che stress, senno'.. ;)


 una ragazza.. :D senti come parlo.. ommamma..)
Urca, fai il girosaldi? Migrazione serale al centro commerciale...dio che
terrore, mi tornano in mente i giri da piccolo con mia nonna...ecco che
torna l'allergia...ARGH!!
Se sei un beone-mangione-giocatore di carte-scacchista (ne basta uno di
questi) sei il benvenuto; se non lo sei sei il benvenuto lo stesso (ma ti
romperesti terribilmente, temo...)

 vorrei un po' di vita sociale in piu'. Qualche consiglio..?
Io l'avrei, ma fai ancora finta di non darmi retta... intanto raccogli le
idee per quel lavoretto...

Ma te stai da queste parti? Avevo capito di no...O forse vuoi portare Zer0
dalle tue parti?

 dalle tue parti?
Vorrei farlo tornare...
Vuoi mettere lo smog di Milano con la spiaggia di Rimini?
P.S. e in bocca al lupo per le novita'!

 P.S. e in bocca al lupo per le novita'!
Grazie, molte novitą, mi tocca perņ aspettare un mesetto...

> comunque..vuoi mettere lo smog di Milano con qualsiasi altra cosa?
Vero. Sbagliato esempio. Pero' era un ottimo motivo per fuggire...

 idee per quel lavoretto...
Ci ho pensato, ma sai che c'e' una difficolta' non indifferente da 
risolvere..? Appena possiamo sentiamoci per tel.


 P.S. e in bocca al lupo per le novita'!
Mi associo!


 tutto dalla vita (magari...)
Ah gia'.. avevo shiftato (a sinistra) di un mese.. :) Sorry, pensavo 
fosse domani ^_^"


 But.. who knows.
Appunto.
E altri spunti in mail...

 dal 16 del mese, pensa te che non lo sapevo...partono quindi da domani).
'azz non faccio in tempo a dirmi "sto thread e' lungo lo leggo con calma 
off-line" che quando arriva quel momento di calma spuntano gli OT 
gustosi :-)
Un po' credo di aver capito cmq, in bocca al lupo Cristiano
... forse forse e' il caso di rispolverare una cerca chiaccherata che 
avevamo cominciato in altro luogo?
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

 Ma una volta non usavi le dita sulla tastiera?
Me lo chiedevo anch'io :-)


 avevamo cominciato in altro luogo?
Direi di sě, magari fra un mesetto...