Newsgroup: it.comp.lang.javascript
Titolo: errore su funzione

da click:
<a class="otherpages" href="javascript:stampa('list');">
oppure
<a class="otherpages" href="javascript:stampa('excel');">
<SCRIPT Language="JavaScript">
  function stampa(dove){
   if ( dove=="excel" ) {
   strTitle = 
"fullscreen=no,scrollbars=yes,menubar=yes,location=no,toolbar=yes,resizable=yes"
   window.open("","stampatore",strTitle);
   var sForm = "<FORM NAME='formStampa' METHOD='post' STYLE='display:none;' 
ACTION='printers_risultato_excel.asp' TARGET='stampatore'>";
   sForm += "<INPUT TYPE='text' NAME='ZONAA' VALUE='all'>";
   sForm += "<INPUT TYPE='text' NAME='DESCRART' VALUE=''>";
   sForm += "</FORM>"
   } else {
    strTitle = "fullscreen=no,scrollbars=yes"
   window.open("","stampatore",strTitle);
   var sForm = "<FORM NAME='formStampa' METHOD='post' STYLE='display:none;' 
ACTION='printers_risultato.asp' TARGET='stampatore'>";
   sForm += "<INPUT TYPE='text' NAME='ZONAA' VALUE='all'>";
   sForm += "<INPUT TYPE='text' NAME='DESCRART' VALUE=''>";
   sForm += "</FORM>"
   }
   if(!document.all.formStampa){
    document.all.tags("BODY")[0].insertAdjacentHTML("beforeEnd",sForm);
   }
   document.all.formStampa.submit();
  }
 </script>
purtroppo non funziona il clik
se clicco list dovrebbe prendermi la riga ACTION='printers_risultato.asp
se clicco excel la riga ACTION='printers_risultato_excel.asp
dove sta l'errore?? 

 dove sta l'errore?? 
Non ho approfondito troppo, ma il codice che hai scritto è
dichiaratamente IE-only. Ciò significa (ammesso ovviamente che non vi
siano altri errori) che funzionerà unicamente sul browser della
Microsoft. Cosa che, tra l'altro, non so se è il comportamento che
desideri.
Visto più o meno quel che deve fare, ti chiedo: non ti conviene avere
sempre nel documento in questione la form per la "stampa" (dato che cmq
la tieni nascosta), al quale poi vai a cambiare attributo action,
tramite pulsanti/link, invece che crearne l'HTML ogni volta?
In aggiunta, non potresti semplicemente fare una richiesta in GET invece
che in POST? Da quel che vedo, non invii altri dati oltre ZONAA="all" e
DESCART="".
-- 
"When you have eliminated the impossible, whatever remains, 
however improbable, must be the truth." 

 tramite pulsanti/link, invece che crearne l'HTML ogni volta?
CIOE'?????

 CIOE'?????
Era un suggerimento. Da quanto vedo dal codice che hai scritto, tu componi una
stringa HTML così composta:
 var sForm = "<FORM NAME='formStampa' METHOD='post' STYLE='display:none;' 
ACTION='printers_risultato.asp' TARGET='stampatore'>";
   sForm += "<INPUT TYPE='text' NAME='ZONAA' VALUE='all'>";
   sForm += "<INPUT TYPE='text' NAME='DESCRART' VALUE=''>";
   sForm += "</FORM>"
In entrambi i casi. L'unica differanza sta nell'attributo "action" della form,
che in un caso è "printers_risultato.asp", mentre in un altro è
"printers_risultato_excel.asp". Ma per il resto il codice mi sembra del tutto
identico.
Una volta composta la stringa, l'aggiungi al documento corrente e poi fai il
submit.
La mia domanda era: c'è una qualche ragione per la quale non puoi scrivere la
form direttamente nell'HTML, e cambiare semplicemente la action prima del
submit? Tradotto, verrebbe una cosa del genere:
<script type="text/javascript">
	function stampa(dove){
		var strFeatures =
"fullscreen=no,scrollbars=yes,menubar=yes,location=no,toolbar=yes,resizable=yes";
		window.open("","stampatore",strFeatures);
 
		if (dove=="excel"){
			document.forms.formStampa.action = "printers_risultato_excel.asp";
		}else{
			strFeatures = "fullscreen=no,scrollbars=yes";
			document.forms.formStampa.action = "printers_risultato.asp";
		}
 
		document.forms.formStampa.submit();
	}
</script>
<form name="formStampa" method="post" action="" target="stampatore">
	<input type="hidden" name="ZONAA" value="all" />
	<input type="hidden" name="DESCRART" value="" />
</form>
Alternativamente, dato sempre il codice che hai scritto nel messaggio
iniziale, perché non passare i valori in GET invece che post? Ovvero,
elimimando completamente la form:
<script type="text/javascript">
	function stampa(dove){
		var strFeatures =
"fullscreen=no,scrollbars=yes,menubar=yes,location=no,toolbar=yes,resizable=yes";
 
		var url = "";
		if (dove=="excel"){
			url = "printers_risultato_excel.asp";
		}else{
			strFeatures = "fullscreen=no,scrollbars=yes";
			url = "printers_risultato.asp";
		}
 
		window.open(url+"?ZONAA=all&DESCRART","stampatore",strFeatures);
	}
</script>
Il tutto premesso ovviamente che il codice effettivo che hai è quello che hai
pubblicato nel primo messaggio.
-- 
Sono Tutti pazzi per Mary, tranne Chuck Norris.

Ho valutato tutti i tuoi esempi
e sono venuta ad un ragionamento spero logico
volevo utilizzare i risultati della query per vederli o in formato html o in 
excel per cui a seconda del click vado in una pagina o nell'altra che sono 
uguali identiche solo che quella in formato excel ha in testata : <% 
Response.ContentType="application/vnd.ms-excel" %> anche se non mi piace 
questa soluzione perche i dati li vorrei esportare direttamente in excel
per cui adesso cosa ho fatto:
 if (dove=="excel"){
url = "printers_risultato_excel.asp"; e qui dentro trovo <% 
Response.ContentType="application/vnd.ms-excel" %>
}else{
strFeatures = "fullscreen=no,scrollbars=yes";
url = "printers_risultato.asp";
e le pagine sono uguali identiche