Newsgroup: it.comp.lang.javascript
Titolo: scrivere dentro la "stessa" pagina.

Ciao a tuti,
ho uno script che uso come motore di ricerca.
Questo script dopo aver elaborato la query apre un'altra finestra con tutti
i risultati del caso.
Io vorrei che mi facesse vedere i risultati nella stessa pagina in cui si
compila il form di richiesta senza aprire ulteriori pagine.
In definitiva e' possibile scrivere sulla "stessa" pagina??? E se si come?
Allego il codice:
<script language="JavaScript" type="text/javascript">
var item = new Array();
// "Nome pagina","percorso","Titolo
pagina","parole,chiave,Key,Words","Descrizione e Commenti"
c=0; item[c]=new
Array("nomepagina.htm","/persone","contatti","alessandra,michela,chiara","Co
ntatta le nostre collaboratrici.");
c++; item[c]=new
Array("paginadue.htm","/city","citta","catania,padova,verona,firenze","Le
nostre sedi.");
[ecc ecc con tutto il resto degli array]
page="<html><head><title>Risultati della ricerca</title></head><boy><body
bgcolor='#d52323'><body link='white'><body text='white'><body
vlink='white'><center><table border=0 cellspacing=10 width=100%>";
function search(frm) {
win = window.open("","","scrollbars=yes,resizable=yes");
win.document.write(page);
txt = frm.srchval.value.toLowerCase().split(" ");
fnd = new Array(); total=0;
for (i = 0; i < item.length; i++) {
fnd[i] = 0; order = new Array(0, 4, 2, 3);
for (j = 0; j < order.length; j++)
for (k = 0; k < txt.length; k++)
if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "")
fnd[i] += (j+1);
}
for (i = 0; i < fnd.length; i++) {
n = 0; w = -1;
for (j = 0;j < fnd.length; j++)
if (fnd[j] > n) { n = fnd[j]; w = j; };
if (w > -1) total += show(w, win, n);
fnd[w] = 0;
}
win.document.write("</table><br>Corrispondenze
trovate:"+total+"<br></body></html>");
win.document.close();
}
function show(which,wind,num) {
link = item[which][1] + item[which][0];
line = "<tr><td><a href='"+link+"'>"+item[which][2]+"</a><br>";
line += item[which][4] + "<br></td></tr>";
wind.document.write(line);
return 1;
</script>
GRAZIE per i consigli

dimenticavo di dire che la necessita' di far scrivere "la risposta" dentro
la stessa pagina scaturisce dal fatto che il form del motore sta dentro un
frame!
<body onload="document.forms[0].srchval.focus()">
<form method=get action="javascript:void(0)" onsubmit="search(this); return
false;">
<input type=text name=srchval value="" size="20"><input type=submit
value="Cerca">
.</form>


Vedi se questo esempietto puo' esserti di aiuto.
<div id="innr">
</div>
<a href="#" onclick="var d=document.getElementById('innr'); d.innerHTML =
'Ho scritto'; return false;">scrivi</a>
Ciao,
Ema


Scusami ma non riesco proprio a capire come e dove inserirlo!
L'unico prob che ha lo script che ho postato ieri e che mi scrive i
risultati della ricerca su una pagina nuova.
Come faccio a farli scrivere sulla stessa pagina del frame????
mah......

 
Spero si capisca.
Ciao.
	-Ema-

 ha scritto nel messaggio
news:Lx3Sc.122056$5D1.6...@news4.tin.it...

Ammetto di non aver letto cosa fa il tuo script. Non so quindi se cio' che
ho scritto fa al caso tuo.
Cmq, x quanto ho capito, la problematica era: non aprire una nuova pagina,
ma scrivere in quella corrente.
Questo e' quello che fa l'esempietto che ti ho postato.
Se vuoi lo commento:
<!-- ---------------------------------------------------------- -->
<!-- un contenitore con definito un id; ho scelto un div perche' ci sono
affezionato -->
<div id="innr"></div>
<!-- un link (ma poteva essere un bottone, un evento, ...) che permette di
richiamare del codice js
 Il codice js si occupa di calcolare una stringa da stampare, in questo caso
'Ho scritto'.
 Poi accede al contenitore definito in precedenza e ci scrive dentro.
 In questo modo, la stringa 'Ho scritto' comparira' all'interno della pagina
corrente. -->
<a href="#" onclick="var d=document.getElementById('innr'); d.innerHTML =
'Ho scritto'; return false;">scrivi</a>
<!-- ---------------------------------------------------------- -->
Pensavo che l'esempio potesse essere adattabile in questo senso:
1) ti definisci il contenitore, dovunque vuoi che i risultati della ricerca
appaiano
2) usi la funzione di ricerca per calcolare il risultato
3) il risultato lo scrivi nel contenitore
Ho scritto piu' commenti che codice. Piu' chiaro di cosi' non riesco ad
essere.
Se hai ancora dubbi cmq son qua, finche' non vado in ferie, ovvio... ARG!
SBAV! SBAV!
Ciao,
Ema

Ti ringrazio per il tempo che mi hai dedicato ma non funziona....
purtroppo....
Dice che l'oggetto "win" non e' definito nella linea
if (w > -1) total += show(w, win, n)
Devo sostituirlo con outString?
Se lo faccio, ancora non funziona, e come errore dice che in questa riga e'
previsto oggetto
outString += line;
Da impazzire insomma... comunque GRAZIE ancora...

 ha scritto nel messaggio
news:TInSc.125928$5D1.6...@news4.tin.it...

Semplicemente passagli "window" senza virgolette.
Oppure togli il parametro dalla funzione show:
1) la chiamata diventa
    if (w > -1) total += show(w, n)
2) la definizione diventa
    function show(which,num) {
Ciao,
Ema (l'altro)

 Ema (l'altro)
He he ... il mio gemellino :-P
-- 
-Ema-

FUNZIONAAAAAAAAAAAAAAAAA!!!!!!
Grandissimo!
Se passi dalle parti di Pordenone come minimo ti offro una birra...
GRAZIE davvero...
solo che (non vorrei abusare della tua pazienza e disponibilita') non riesco
ad applicare il css alla pagina che viene creata.
Quando era ancora pagina indipendente veniva creata cosi'
page="<html><head><title>Risultati della ricerca</title></head><body><body
bgcolor='#d52323'><body link='white'><body text='white'><body
vlink='white'><center><table border=0 cellspacing=10 width=100%></body>";
Se provo ad aggiungere il foglio di stile
page="<html><head><title>Risultati della ricerca</title><link rel=stylesheet
href="stile.css" type ="text/css"></head><body><body bgcolor='#d52323'><body
link='white'><body text='white'><body vlink='white'><center><table border=0
cellspacing=10 width=100%></body>";
mi da errore!
comunque GRAZIE ancora...

 <body><body bgcolor='#d52323'><body> link='white'><body text='white'><body
vlink='white'>
e non
<body bgcolor='#d52323' link='white' text='white' vlink='white'>
?
che cmq se adesso usi i css tutto questo non servira' nemmeno +...
Ciao,
Ema

Azz!
Ogni volta che adatto l'html al javascript mi faccio fregare delle
virgolozze..
Adesso funziona SPLENDIDAMENTE!
GRAZIE a te.
Sulla riga di codice hai perfettamente ragione, ma tanto adesso accetta i
css....
GRAZIE ancora e alla prossima...