Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

sull'uso di undefined per controllare l'esistenza di un elemento

57 views
Skip to first unread message

oss

unread,
Feb 2, 2011, 5:32:37 PM2/2/11
to
Un dubbio che mi è sorto facendo qualche elementare esercizio in Firebug:

if (document.getElementById("prova")==undefined)
alert ("no");

Queste due righe di codice (riprese bellamente da uno dei tanti esempi
in rete) mi servono per controllare se esiste già un elemento, prima di
approfondire l'esercizio (cioè, in caso negativo, creare tale elemento).

Eseguite dalla console di Firebug, nel pannello di sinistra fanno
comparire la dicitura "undefined".
Ecco, io vorrei sapere se è un messaggio informativo del tutto "normale"
oppure se sto facendo la cosa sbagliata e devo verificare l'esistenza
dell'elemento in un altro modo che non produca nessuna dicitura.
Scusate la domanda che forse vi apparirà idiota, ma il dubbio mi assilla.
Grazie anticipate.


Cristiano Larghi

unread,
Feb 3, 2011, 3:39:57 AM2/3/11
to
Il Wed, 02 Feb 2011 23:32:37 +0100, oss ha scritto:

> if (document.getElementById("prova")==undefined) alert ("no");

non restituisce undefined se non trova l'elemento con l'id indicato.
Leggi la documentazione, è ben scritto cosa restituisce:
https://developer.mozilla.org/en/DOM/document.getElementByID

oss

unread,
Feb 3, 2011, 1:16:59 PM2/3/11
to
>> if (document.getElementById("prova")==undefined) alert ("no");
>
> non restituisce undefined se non trova l'elemento con l'id indicato.
> Leggi la documentazione, è ben scritto cosa restituisce:
> https://developer.mozilla.org/en/DOM/document.getElementByID

Perdinci, è vero! Ora non ricordo più quale pagina avevo letto, ma ho
capito che devo considerare il sito di mozilla come la bibbia!

Comunque, ripetendo il mio esempio con null,

if (document.getElementById("prova")==null)
alert ("no");

ottengo lo stesso "undefined" nel pannello di sinistra della Console di
Firebug. Cosa significa? Me ne devo preoccupare? Ancora grazie!

Cristiano Larghi

unread,
Feb 3, 2011, 1:21:36 PM2/3/11
to
Il Thu, 03 Feb 2011 19:16:59 +0100, oss ha scritto:

> Perdinci, è vero! Ora non ricordo più quale pagina avevo letto, ma ho
> capito che devo considerare il sito di mozilla come la bibbia!

yes! :-)

> Comunque, ripetendo il mio esempio con null,
> if (document.getElementById("prova")==null) alert ("no");
> ottengo lo stesso "undefined" nel pannello di sinistra della Console di
> Firebug. Cosa significa? Me ne devo preoccupare? Ancora grazie!

non uso firebug se non per gestione errori, quindi non so dirti. Ti devi
preoccupare se, messo nel codice, ti restituisce "undefined": fosse null
avresti 2 possibilità:
a) non esiste un elemento con id="prova"
b) ne esiste più di uno

ma "undefined", riferito a una function (esistente o meno), non saprei
dire come possa succedere (ripeto: nel codice ...). A naso farei un bel
format ... :-)

Senza saperne nulla, se funziona come le normali "finestre immediate",
quello che dovresti scrivere è ?document.getElementById("prova") , e
vedere come risultato "null" o "object window".

Puoi fare la stessa cosa direttamente dalla riga dell'URL del browser,
del tipo:
javascript:if(document.getElementById("prova")==null) alert("ok");

ZER0

unread,
Feb 3, 2011, 4:00:51 PM2/3/11
to Cristiano Larghi
On 02/03/11 9:39 AM, Cristiano Larghi wrote:

>> if (document.getElementById("prova")==undefined) alert ("no");

> non restituisce undefined se non trova l'elemento con l'id indicato.

Vero, ma giusto per dover di cronaca quel codice è del tutto valido,
dato che usando l'operatore di uguaglianza con undefined viene
verificato anche che il valore sia null:

null == undefined // true

diverso sarebbe stato se avess fatto:

null === undefined // false

> Leggi la documentazione, è ben scritto cosa restituisce:
> https://developer.mozilla.org/en/DOM/document.getElementByID

E a proposito di documentazione:
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/undefined

--
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."

ZER0

unread,
Feb 3, 2011, 4:07:30 PM2/3/11
to
On 02/02/11 23:32 PM, oss wrote:

> Un dubbio che mi ᅵ sorto facendo qualche elementare esercizio in Firebug:


>
> if (document.getElementById("prova")==undefined)
> alert ("no");

Puoi semplificare in:

if (!document.getElementById("prova"))
alert("no");

> Eseguite dalla console di Firebug, nel pannello di sinistra fanno
> comparire la dicitura "undefined".

ᅵ normale, perchᅵ le console (firebug, safari, chrome) visualizzano
sempre il valore di ritorno dell'ultimo statement. Dato che alert non ha
alcun valore di ritorno, viene appunto visualizzato "undefined".

Se tu facessi:

if (!document.getElementById("prova"))
alert("no") || 2;

Firebug dovrebbe visualizzarti "2" dopo l'alert, invece che undefined.

> Ecco, io vorrei sapere se ᅵ un messaggio informativo del tutto "normale"

Sisi, perfettamente normale.

> Scusate la domanda che forse vi apparirᅵ idiota, ma il dubbio mi assilla.

Tranquillo, il NG ᅵ qui per questo. :)

> Grazie anticipate.

Prego!

0 new messages