Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Motore di ricerca in Javascript

    Raga, sono nuovo nuovo mi sono iscritto perché siete la mia ultima speranza. Sto usando questo javascript che crea un motore di ricerca, il problema è che chi ha creato questo script ha implementato la funzione che i risultati vengano dati in una popup... io invece da giorni e giorni sto cercando di capire come fare per avere i risultati usando la stessa pagina del browser.

    Questo è il codice:

    codice:
    <script language="JavaScript" type="text/javascript">
    
    var item = new Array();
    
    /* Here is where all the magic happens.  
        Just enter as many additional pages that
        that you want to search, then fill in the
        additional listings for each page.
    */
    
    // "Nome pagina","percorso","Titolo pagina","parole,chiave,Key,Words","Descrizione e Commenti"
    
    c=0; item[c]=new Array("index.htm","","SERIALit Home Page","index,main,start,home,page,serialit,elenco,principale,sito","La home page del sito SERIALit.");
    
    c++; item[c]=new Array("link.htm","","Scambio Link","link,banner,scambio,exchange,pubblicità,spot","La sezione in cui segnalare il tuo sito a SERIALit per uno scambio link.");
    
    page="<html><head><title>Risultati della ricerca:</title></head><link href='style_newsletter.css' rel='stylesheet' type='text/css'><body topmargin='10' leftmargin='10'><center>[img]images/search02.jpg[/img]<table background='images/search03.gif' border='0' width='422'>";
    
    
    function search(frm) {
    win = window.open("","","scrollbars=yes, width=461, height=560, left=15, top=10");
    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("<td><font face='arial' size='2' color='#CCFF33'><center>Voci trovate: "+total+"</center></font></td></table>[img]images/search04.gif[/img]</body></html>");
    win.document.close();
    }
    function show(which,wind,num) {
    link = item[which][1] + item[which][0]; 
    line = "<tr><td><blockquote><font size='2'>[img]images/search05.gif[/img]"+item[which][2]+"</font>
    ";
    line += item[which][4] + "
    
    </td></blockquote></tr>";
    wind.document.write(line);
    return 1;
    }
    </SCRIPT>
    Dopo ore ed ore e qualche aiuto ho verificato che eliminando la stringa [CODE]win = window.open("","","scrollbars");[CODE] e trasformando la stringa
    codice:
    win.document.write(page);
    in
    codice:
    document.write(page);
    la cosa funziona, ovvero il risultato mi viene restituito nello stesso frame principale, ma si verifica un altro problema. In poce parole mi visualizza solo ciò che c'è prima del punto in cui devono essere elencati i link di risultato attinenti alla ricerca, da quel punto in poi nulla.

    Qualcuno mi aiuta?

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao SERIALit e benvenuto nel forum

    non sapendo com'è fatto il form che usi non ho potuto testare se va bene....
    prova così (document.write(line) anche nella seconda funzione)
    codice:
    function search(frm) {
      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;
      }
      document.write("<td><font face='arial' size='2' color='#CCFF33'><center>Voci trovate: "+total+"</center></font></td></table>[img]images/search04.gif[/img]</body></html>");
      document.close();
    }
    function show(which,wind,num) {
      link = item[which][1] + item[which][0]; 
      line = "<tr><td><blockquote><font size='2'>[img]images/search05.gif[/img]"+item[which][2]+"</font>
    ";
      line += item[which][4] + "
    
    </td></blockquote></tr>";
      document.write(line);
      return 1;
    }
    facce sape'

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    tieni presente che così tutto quello che si trova nella pagina verrà sostituito con quello che scrivono le funzioni.
    se vuoi scrivere in una determinata zona della pagina potresti mettere un div
    codice:
    <div id=divRisultato></div>
    e le funzioni così
    codice:
    function search(frm) {
      document.getElementById('divRisultato').innerHTML=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;
      }
      document.getElementById('divRisultato').innerHTML+="<td><font face='arial' size='2' color='#CCFF33'><center>Voci trovate: "+total+"</center></font></td></table>[img]images/search04.gif[/img]</body></html>";
    }
    function show(which,wind,num) {
      link = item[which][1] + item[which][0]; 
      line = "<tr><td><blockquote><font size='2'>[img]images/search05.gif[/img]"+item[which][2]+"</font>
    ";
      line += item[which][4] + "
    
    </td></blockquote></tr>";
      document.getElementById('divRisultato').innerHTML+=line;
      return 1;
    }

  4. #4
    Si, non fa nulla che sovrascrivino, l'importante è capire se il risultato esce tutto o ne esce mezzo, ora faccio una prova.

  5. #5
    Non va, o meglio, non riesco a farlo andare.

    Allora, vediamo se dandoti di più riesci a capire dove sta il problema:

    Questo è il codice così come è stato creato:

    codice:
    <html>
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    
    <script language="JavaScript" type="text/javascript">
    
    var item = new Array();
    
    /* Here is where all the magic happens.  
        Just enter as many additional pages that
        that you want to search, then fill in the
        additional listings for each page.
    */
    
    // "Nome pagina","percorso","Titolo pagina","parole,chiave,Key,Words","Descrizione e Commenti"
    
    c=0; item[c]=new Array("index.html","","Web-Link","index,main,start,home","Dimostrazione motore di ricerca interno al tuo sito.");
    
    c++; item[c]=new Array("index.html","","primi passi","iniziare,principianti,come,fare","Corso html per principianti.");
    
    c++; item[c]=new Array("index.html","","Guida html","html,links,pagina,web","Guida html.");
    
    c++; item[c]=new Array("scripting.htm","main/","Scripting","script,scripting,javascript,dhtml","Scripting per tutti.");
    
    c++; item[c]=new Array("lewebcen.gif","main/images/","Link Logo","link,image,logo,graphic,immagine","Il logo del mio sito in formato gif. Potete fare un link adoperando questo.");
    
    
    page="<html><head><title>Search Results</title></head><body bgcolor='white'><center><table border=0 cellspacing=10 width=80%>";
    
    
    function search(frm) {
    win = window.open("","","scrollbars");
    win.document.write(page);
    txt = frm.srchval.value.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>
    Parole trovate: "+total+"
    </body></html>");
    win.document.close();
    }
    function show(which,wind,num) {
    link = item[which][1] + item[which][0]; 
    line = "<tr><td>"+item[which][2]+" Punti: "+num+"
    ";
    line += item[which][4] + "
    "+link+"</td></tr>";
    wind.document.write(line);
    return 1;
    }
    // End --> 
    </SCRIPT>
    
    
    </head>
    
    <body>
    
    <form method=get action="javascript:void(0)" onsubmit="search(this); return false;">
    <input type=text name=srchval value=""><input type=submit value="Cerca">
    </form>
    
    
    </body>
    
    </html>
    Come si riesce a far ottenere il risultato nella stessa pagina (sovrascrivendola) invece che in una popup?

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    riCiao SERIALit e scusa se rispondo solo adesso ma sono stato un po' impegnato...
    allora, ti ho fatto delle modifiche al codice, dimmi se ti può andare
    codice:
    <html>
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    
    <script language="JavaScript" type="text/javascript">
    
    var item = new Array();
    
    /* Here is where all the magic happens.  
        Just enter as many additional pages that
        that you want to search, then fill in the
        additional listings for each page.
    */
    
    // "Nome pagina","percorso","Titolo pagina","parole,chiave,Key,Words","Descrizione e Commenti"
    
    c=0; item[c]=new Array("index.html","","Web-Link","index,main,start,home","Dimostrazione motore di ricerca interno al tuo sito.");
    
    c++; item[c]=new Array("index.html","","primi passi","iniziare,principianti,come,fare","Corso html per principianti.");
    
    c++; item[c]=new Array("index.html","","Guida html","html,links,pagina,web","Guida html.");
    
    c++; item[c]=new Array("scripting.htm","main/","Scripting","script,scripting,javascript,dhtml","Scripting per tutti.");
    
    c++; item[c]=new Array("lewebcen.gif","main/images/","Link Logo","link,image,logo,graphic,immagine","Il logo del mio sito in formato gif. Potete fare un link adoperando questo.");
    
    
    page="<html><head><title>Search Results</title></head><body bgcolor='white'><center><table border=0 cellspacing=10 width=80%>";
    
    var htmlRisultato=''
    function search(frm) {
    htmlRisultato=page;
    txt = frm.srchval.value.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, n);
    fnd[w] = 0;
    }
    htmlRisultato+="</table>
    Parole trovate: "+total+"
    </body></html>";
    document.getElementById('divRicerca').innerHTML=htmlRisultato
    }
    function show(which,num) {
    link = item[which][1] + item[which][0]; 
    line = "<tr><td>"+item[which][2]+" Punti: "+num+"
    ";
    line += item[which][4] + "
    "+link+"</td></tr>";
    htmlRisultato+=line;
    return 1;
    }
    // End --> 
    </SCRIPT>
    </head>
    <body>
    <form method=get action="javascript:void(0)" onsubmit="search(this); return false;">
    <input type=text name=srchval value=""><input type=submit value="Cerca">
    </form>
    <div id="divRicerca"></div>
    </body>
    </html>
    se hai bisogno di chiarimenti o ci sono problemi chiedi pure... ma risponderò domani... ora vado a casa

  7. #7
    Non ci posso credere VVoVe: Ce l'hai fatta.
    Ascolta, solo due domande:

    1) Ho visto che hai usato il div per fare in modo che il risultato venga fornito senza sovrascrivere la pagina precedeten. Non è che si può fare il contrario? Cioè permettergli di sovrascriverla?
    2) Se la pagina fosse strutturata in frame e si volesse che il risultato fosse restituito nel _parent cosa si dovrebbe fare?

    Mi sa che ho trovato qualcuno che può davvero aiutarmi apetto quindi paziente paziente la tua risposta di domani

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    l'ultima istruzione della prima funzione è
    codice:
    document.getElementById('divRicerca').innerHTML=htmlRisultato;
    e serve per scrivere in un determinato div all'interno della pagina.
    se vuoi sostituire tutto ti basta fare un
    codice:
    document.write(htmlRisultato);
    se invece vuoi scrivere su un altro frame
    codice:
    top.NomeFrame.document.write(htmlRisultato);

  9. #9
    VVoVe: VVoVe: Oh mi Dio!!!!
    Te non hai idea da quanti giorni sogno questo momento
    Grazie, davvero grazie!!!!

    Una curiosità per finire:

    Se invece il motore di ricerca si trovasse in un IFRAME e si volesse che il risultato venga restituito non all'interno dell'IFRAME stesso ma ovviamente nel frame principale, chiamato se non erro _parent?

  10. #10
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    sì parent va bene
    codice:
    parent.document.getElementById('idDelDiv').innerHTML=htmlRisultato;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.