Newsgroup: it.comp.lang.javascript
Titolo: Gestione errori

Ciao a tutti,
realizzando un form, e con l'opzione debug attivata, facendo il submit
lasciando un campo text vuoto, il browser restituisce un messaggio di errore
del tipo:
Riga XXXX
Errore: "YYYY" è nullo o non è un oggetto.
Chiaramente è un warning, ovvero non un errore nello script, ma
semplicemente informa (in questo caso specifico) che si è lasciato un campo
vuoto (nullo).
Ora vorrei sapere se c'è un modo per filtrare tale warning, in altre parole,
poichè il campo YYYY può essere lasciato anche vuoto (nel form), vorrei
evitare che venisse visualizzata tale finestrella di avviso.
Chi mi può aiutare in tal senso a risolvere il problema?
Ringrazio da adesso per le risposte.
Cooper.
-- 
------------------------------------
BlueWare WebAgency
 [web] 
http://www.blueware.it
 [msn] 
coo...@blueware.it
 [icq] 146781935

> Chiaramente è un warning, ovvero non un errore nello script, ma
Perché é chiaramente un warning ignorabile?
E' un messaggio di errore, ti avvisa che stai facendo riferimento a un
oggetto YYYY che non esiste; sicuramente non appare alcun warning se esegui
il submit di una form con un campo non compilato...


Come sopra, se l'oggetto esiste ed è correttamente definito, devo prendere
per vero la prima ipotesi "YYYY è nullo" come di fatto lo è...


Ti stai sbagliando; se sei sicurissimo di quel che dici prova a formattare
il pc...


Si sono sicuro!... te sei sicuro di non essere OT ? ti consiglio di andare
su: it.assistenza.tecnica.pc  magari li ti spiegheranno meglio cosa è e a
cosa serve la formattazione...
Ti anticipo che hai commesso alcune inesattezze... e per la precisione... si
formatta il disco rigido e  non il computer.... (e  questo da solo, la dice
lunga)...
Con stima, Cooper.
PS: Mi scoccia entrare in polemica, taglio qui. Tornando al mio problema,
sono certo perchè lo script funziona correttamente, i dati li restituisce
correttamente, ma... se non attivo il debug degli script, il messaggio non
appare.
Se ci fosse un errore sintattico, lo script a parte che non dovrebbe
funzionare, ma a prescindere da questo non dovrebbe nemmeno restituirmi i
valori che gli passo.
Infatti,  ho due text,  sulla prima lascio vuoto e sulla seconda inserisco
un valore.... se attivo il debug, mi segnala "errore" sulla prima" se
disattivo il debug, non segnala l'errore, ma in entrambi i casi mi
visualizza (tramite: document.write, o alert) nel primo caso: un valore
nullo, nel secondo il valore che ho immesso.
Chiedo per cortesia se qualcuno "più serio" possa rispordermi o darmi dei
suggerimenti più precisi in merito.
Mi scuso ancora, e ringrazio nuovamente chi può dedicarmi due minuti.


 suggerimenti piů precisi in merito.
PLONK
Torno a dare il "poco serio" da un'altra parte

 suggerimenti più precisi in merito.
Se il debugger ti restituisce un errore vuol dire che c'e' un errore: 
che ie prenda iniziative d'accordo, ma il warning sui campi vuoti no...
Nella fattispecie stai cercando di riferirti ad un oggetto che non 
esiste (piu' probabilmente ad una proprieta' o un metodo di un oggetto 
che non esiste).
Sii serio anche tu e posta un po' di codice, altrimenti aiutarti e' 
impossibile.


        <input type="reset" name="Reset" value="Reimposta"></td>
    </tr>
  </table>
</form>
</body>
</html>
----------------------------------------------------------------------------
-
Cordialmente, Cooper.
PS: Si poteva tranquillamente chiedere di postare il codice se qualcosa non
è chiara dalla sola descrizione, Ma contraddire "l'ipotesi, che si assume
per vera" è troppo. E' vero che non sono un esperto di javascript, ma in
ambito di analisi credo di poter dire qualcosa.

 darmi una risposta precisa
Ci siamo proprio svegliati male oggi, eh?
Tornando al tuo problema: purtroppo, tempo tiranno, non posso guardare 
ora con attenzione (lo faccio comunque piu' tardi). Intanto ti faccio 
notare cosa vedo a colpo d'occhio.
1) un errore "concettuale": richiami le funzioni di validazione due 
volte (esclusi gli onchange): sull'evento onsubmit e una sull'evento 
onclick del pulsante. La funzione verra' effettivamente chiamata due 
volte in successione brevissima e la concomitanza delle chiamate 
potrebbe generare qualche casino.
Questo in generale, ma soprattutto con ie che non e' sempre immediato 
nel generare il nuovo oggetto window che chiedi (spesso e' necessario 
posticipare l'apertura delle popup con un piccolo timeout per fargli 
eseguire correttamente tutte le operazioni).
2) Il costrutto switch non prevede il raggruppamento tra graffe dei vari 
blocchi case. Non dovrebbe presentare problemi, ma visto che le suddette 
parentesi sono usate anche come object initializer non vorrei che 
qualche parser creasse problemi.
Basta un:
switch(expression){
	case label:
	//vari statements
	break;
}
Se le osservazioni non ti hanno aiutato dimmi anche su che riga ti viene 
segnalato l'errore, cosi' ho un punto di partenza che viene incontro al 
tempo tiranno.


Riga 39
Grazie per l'interesse,


 Riga 39
Facendo copia e incolla del tuo codice (e sistemando le andate a capo) a 
me corrisponde con "</head>". Mi dici esattamente in quale porzione di 
codice?
Sempre col copia e incolla brutale non mi viene riprodotto il tuo 
errore, che quindi a maggior ragione potrebbe essere imputato agli 
oggetti window e alla concomitanza delle chiamate (sempre che non stia 
nel codice che non hai postato).
Ad ogni modo comincia col seguire il mio consiglio e sottoponi 
l'apertura della finestra e il submit dei dati ad un unico evento.


Sono costretto a scrivere cosi:
<form name="form2" method="get" onSubmit="return ((check(true)) &&
(analisys()))" action="module.php" target="fin">
  <table width="100%">
   ....
    <tr>
      <td>Confirm:</td>
      <td><input type="submit" name="Submit" value="Invia" OnClick="if
((check(false)) && (analisys())) {
MM_openBrWindow('module.php','fin','scrollbars=yes,width=690,height=400') }"
        <input type="reset" name="Reset" value="Reimposta"></td>
    </tr>
  </table>
</form>
perche se scrivo come suggerisci te, ovvero:
if ((check(false)) && (analisys())) {
MM_openBrWindow('module.php','fin','scrollbars=yes,width=690,height=400') }
dentro onsubmit, e togliendolo da onclick non succede nulla; se lo metto
dentro action lo riporta come url.


 dentro action lo riporta come url.
Nain, io ti ho detto di sottoporlo a onsubmit, non di scriverlo cosi'...
Allora: onsubmit="" nel tag html significa che quello che metti tra gli 
apici e' il corpo della funzione associata all'evento.
Un po' come scrivere da codice: oggetto.onsubmit=function(){...}
Se la funzione restituisce true viene eseguita la action indicata nel 
tag, altrimenti no.
Brevemente io intenderei cosi':
<script type="text/javascript">
function foo(frm){
	if (check(false)&&analisys()){
		window.open("module.php","fin","scrollbars=yes,width=690,height=400");
	setTimeout("frm.submit()",500);
	}
	return false;
}
</script>
<form action="module.php" onsubmit="return foo(this)" target="fin">
...
</form>
Cosi' non e' propriamente elegante: il timeout di 500ms e' ovviamente 
empirico. Se il form e' in get potresti al limite ciclarne gli elementi 
e passare la querystring esplicitamente nel window.open(...)

http://www.comserver.net
Italian Agent wanted now.