Newsgroup: it.comp.lang.javascript
Titolo: isObject ??

Esiste una funzione isObject (o qualcosa di simile) che restituisce true se
un qualcosa passatogli č un oggetto ?
esempio:
ho un form e voglio sapere (so di per certo che non lo č) se
document.modulo.campo_testo esiste o meno nel form
Se non esiste, la funzione isObject dovrebbe restituire false, se fa parte
del form restituire true.
Conoscete funzionalitą simili ?
J

 Conoscete funzionalità simili ?
esiste la funzione typeof() che restituisce il tipo dell'argomento
typeof(1) == 'number'
typeof(window) == 'object'
typeof('pluto') == 'string'
mentre l'operatore instanceof verifica l'appartenenza a una "classe" (uso
qui un parolone fuori luogo ma che rende l'idea: javascript non è tipizzato)
var s=new String();
(s instanceof String) == true
var o=new Object();
(o instanceof Object) == true
([1,2] instanceof Array) == true
~~
artemis.alpeia

Purtroppo typeof restituisce "string" anche per oggetti non definiti
all'interno di un form.
instanceof prevede invece che l'oggetto di analisi sia a priori un oggetto.
Ho cercato anche isDefined o simili, ma pare non ci sia scampo.
Potrei aggirare il problema se fossi in grado di verificare l'esistenza di
una stringa in un vettore.
Un vettore così fatto:
testo[0]="casa";
testo[1]="abete";
testo[2]="pino";
come faccio a sapere se la parola "uffa" è o non è contenuta nell'array ?
Devo per forza sparsarmelo tutto ? :)
J

A me pare non vada :)
Ne ho uno scatafascio (non ti preoccupare, genero il javascript da un ciclo
in php quindi non me le scrivo a mano ste cose :)
e mi spara un javascript error su una riga al di fuori dallo script (riga
101 -> <td width="455" valign="top">&nbsp;</td> )
che non ha senso.
modmod è il NAME del form.
E ancora non ho iniziato a valutare se il value di questi campi è NOT '' o
vuoto :)
Per ora mi limito a associare una descrizione a un campo, memorizzarla in
una variabile nel caso in cui il campo non esista e visualizzare una alert
che dica "oh guarda che sto campo, in questo form, mica esiste:
segue_lista_dei_campi_inesistenti_separati_da_enter" :))
J
if (document.modmod.denominzione_ragione_sociale_sede_legale == null) {
testo=testo+"Denominzione/Ragione sociale sede legale\n"; }
if (document.modmod.formagiuridica_sede_legale == null) {
testo=testo+"Formagiuridica sede legale\n"; }
if (document.modmod.p_iva_sede_legale == null) { testo=testo+"P iva sede
legale\n"; }
if (document.modmod.registro_Imprese_sede_legale == null) {
testo=testo+"Registro Imprese sede legale\n"; }
if (document.modmod.alias_sede_legale == null) { testo=testo+"Alias sede
legale\n"; }
if (document.modmod.prov_Sede_Legale == null) { testo=testo+"Prov Sede
Legale\n"; }
if (document.modmod.citta_Sede_Legale == null) { testo=testo+"Città Sede
Legale\n"; }
if (document.modmod.part_top_sede_legale == null) { testo=testo+"Part
TopSede Legale\n"; }
if (document.modmod.indirizzo_sede_legale == null) { testo=testo+"Indirizzo
Sede Legale\n"; }
if (document.modmod.n_civico_sede_legale == null) { testo=testo+"Ncivico
Sede Legale\n"; }
if (document.modmod.cap_sede_legale == null) { testo=testo+"Cap Sede
Legale\n"; }
if (document.modmod.nazione_sede_legale == null) { testo=testo+"Nazione sede
legale\n"; }
if (document.modmod.tel_fisso_sede_legale == null) { testo=testo+"Tel fisso
sede legale\n"; }
if (document.modmod.agevolazioni_fiscali == null) {
testo=testo+"Agevolazioni fiscali\n"; }
if (document.modmod.categoria_agevolazioni == null) {
testo=testo+"Categoria/Settore di appartenenza\n"; }
if (document.modmod.nome_contatto_amministrativo == null) {
testo=testo+"Nome Contatto amministrativo\n"; }
if (document.modmod.cognome_contatto_amministrativo == null) {
testo=testo+"Cognome contatto amministrativo\n"; }
if (document.modmod.tel_contatto_amministrativo == null) { testo=testo+"Tel
contatto amministrativo\n"; }
if (document.modmod.cell_contatto_amministrativo == null) {
testo=testo+"Cell contatto amministrativo\n"; }
if (document.modmod.email_contatto_amministrativo == null) {
testo=testo+"E-mail contatto amministrativo\n"; }
if (document.modmod.indirizzo_fattura_se_diverso_dalla_sede_legale: == null)
{ testo=testo+"Indirizzo fattura se diverso dalla sede legale:\n"; }
if (document.modmod.indirizzo_fattura == null) { testo=testo+"indirizzo
fattura\n"; }
if (document.modmod.num_civ_fattura == null) { testo=testo+"num civ
fattura\n"; }
if (document.modmod.città_fattura == null) { testo=testo+"città
fattura\n"; }
if (document.modmod.cap_fattura == null) { testo=testo+"cap fattura\n"; }
if (document.modmod.prov_fattura == null) { testo=testo+"prov fattura\n"; }
if (document.modmod.presso_fattura == null) { testo=testo+"presso
fattura\n"; }
if (document.modmod.nazione_fattura == null) { testo=testo+"nazione
fattura\n"; }
if (document.modmod.pagamento_RIA == null) { testo=testo+"pagamento
RIA\n"; }
if (document.modmod.conto_corrente == null) { testo=testo+"conto
corrente\n"; }
if (document.modmod.abi == null) { testo=testo+"ABI\n"; }
if (document.modmod.cab == null) { testo=testo+"CAB\n"; }
if (document.modmod.Banca == null) { testo=testo+"Banca\n"; }
if (document.modmod.Agenzia == null) { testo=testo+"Agenzia\n"; }
if (document.modmod.Indirizzo_agenzia == null) { testo=testo+"Indirizzo
agenzia\n"; }
if (document.modmod.Numero_civico_agenzia == null) { testo=testo+"Numero
civico agenzia\n"; }
if (document.modmod.cap_agenzia == null) { testo=testo+"CAP agenzia\n"; }
if (document.modmod.citta_agenzia == null) { testo=testo+"Città
agenzia\n"; }
if (document.modmod.provincia_agenzia == null) { testo=testo+"Provincia
agenzia\n"; }
if (document.modmod.bonifico == null) { testo=testo+"Bonifico\n"; }
if (document.modmod.pagamento_fattura == null) { testo=testo+"Pagamento
Fattura\n"; }
if (document.modmod.anno == null) { testo=testo+"Data ordine - Anno\n"; }
if (document.modmod.mese == null) { testo=testo+"Data ordine - Mese\n"; }
if (document.modmod.giorno == null) { testo=testo+"Data ordine -
Giorno\n"; }
if (document.modmod.cognome_contatto_tecnico == null) { testo=testo+"Cognome
Contatto Tecnico\n"; }
if (document.modmod.area_contatto_tecnico == null) { testo=testo+"Area
Contatto Tecnico\n"; }
if (document.modmod.contatto_tecnico_reperibile_dalle == null) {
testo=testo+" Contatto Tecnico\n"; }
if (document.modmod.contatto_tecnico_reperibile_alle == null) {
testo=testo+"Contatto Tecnico\n"; }
if (document.modmod.telefono_contatto_tecnico == null) {
testo=testo+"Telefono Contatto Tecnico\n"; }
if (document.modmod.mail_contatto_tecnico == null) { testo=testo+"Email
Contatto Tecnico\n"; }
if (document.modmod.cellulare_contatto_tecnico == null) {
testo=testo+"Cellulare Contatto Tecnico\n"; }
if (document.modmod.note == null) { testo=testo+"Note\n"; }
if (document.modmod.nome_contatto_tecnico == null) { testo=testo+"Nome
Contatto Tecnico\n"; }
if (testo!='') {
 alert(testo);
 return false;
}

 Devo per forza sparsarmelo tutto ? :)
A naso dovrebbe funzionare questa:
esiste=array.join().indexOf("uffa")==-1?"No":"Si";
Ma se vuoi anche l'indice devi sparsartelo.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

, 
ro...@rock.it
 says...

Cio' che chiedi sono due cose diverse.
Sapere se "un qualcosa" e' un oggetto, e' diverso dal dire "sapere se un 
qualcosa esiste".
Per il caso del form puoi utilizzare la seguente sintassi:
if (typeof(document.forms[0].campo)=="undefined")
	alert("Il campo non esiste all'interno del form specificato.");
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"Quanti angeli danzano sulla punta di uno spillo?"

 (s instanceof String) == true
"instanceof" non fa parte di JS 1.3, ma appare solo in Javascript 
1.4/1.5 e JScript.


 all'interno di un form.
Non confondiamoci.
Typeof restituisce sempre una stringa, ma per elementi non definiti tale 
stringa e' "undefined".
Per evitare ulteriori fraintendimenti ti posto un breve stralcio di 
codice:
<script> 
	function f(){
		alert(typeof(document.forms[0].pippo));
		alert(typeof(document.forms[0].pluto));
	}
</script>
<form>
	<input type="text" name="pippo">	
</form>
<a href="#" onclick="f();">Cliccami</a>


 testo=testo+"Denominzione/Ragione sociale sede legale\n"; }
[..]
Questo tipo di programmazione mi pare un po' "barbara".. :) Nn conosco 
il problema, ma sicuramente c'e' un modo piu' efficiente per risolverlo.
E che, magari, da' meno spazio ad eventuali bug :)
P.S.
Per accodare una stringa, puoi usare la seguente sintassi:
testo+="stringa da accodare";


 testo+="stringa da accodare";
Meglio non entrare in merito a questioni tipo "ciao=ciao+1 oppure meglio
ciao++ ?" :))
Cmq, grazie. stasera proverò e vi farò sapere.
J

 alert("Il campo non esiste all'interno del form specificato.");
La cosa assurda è che ho fatto un ciclo su tutti i nomi di campi che devo
controllare ed ho notato che il mio browser mostra "string" anche per campi
che dovrebbero essere undefined.
In teoria quello che devo fare è questo:
So a priori che in una serie di moduli html tutti diversi per contenuti, ho
dei campi per cui devo "forzare" la compilazione.
Il nome dei campi da forzare è in un db stabilito (che può variare nel
tempo, vabbè).
So però che non tutti i nomi presenti nel db saranno sicuramente presenti
nei moduli da compilare quindi devo poter controllare se un determinato nome
è presente o meno nel form.
J

Beh un cazzotto mi ci stava bene.
Sono talmente andato sul sicuro col mio db di nomi di campi che non avevo
notato un : di troppo e lo script, grazie ai vostri suggerimenti, ho
scoperto funzionare a perfezione fino al campo sbagliato (ecco del perchè
dell'errore).
Grazie per i suggerimenti.
J