Newsgroup: it.comp.lang.javascript
Titolo: da input di testo a tendina - codice

Ciao, gentilmente chiedo un aiuto:
sto cercando di capire la struttura di uno script che ho scaricato che è un
motore di ricerca interno.
quando si effettua la ricerca attualmente bisogna digitare una parola in un
campo di testo e premere invio e il motore va a trovare la parola in un file
.js
io vorrei fare una modifica ( ma non ci sto riuscendo ) :
vorrei trasformare il campo di input di testo con una finestra a tendina
solo con le parole di ricerca che io desidero,
COME FARE, VI CHIEDO AIUTO!
inserisco qui di seguito il codice:
_________________________________________________________________________________________________________________
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" src="db.js"></script>
<script language="javascript">
var tutti = "_and"
var alcuni = "_or"
var tipo_ricerca = ""
var s = 0
var o = 5
var copia_risultati = new Array()
var doc = parent.frames[1].document
function filtro (query) {
 if (query.charAt(0) == "+")
 {
  query = query.substring (1, query.length)
  tipo_ricerca = tutti
 }
 else
 {
  tipo_ricerca = alcuni
 }
 while (query.charAt(0) == " ") query = query.substring(1, query.length)
  document.forms[0]._query.value = query
 while (query.charAt(query.length - 1) == " ") query = query.substring(0,
query.length - 1)
  document.forms[0]._query.value = query
 formatta_stringa (query)
}
function formatta_stringa (query) {
 var stringa_formata = query.split (" ")
 if (tipo_ricerca == "_or")
  cerca_or (stringa_formata)
 else
  cerca_and (stringa_formata)
}
function cerca_or (stringa_formata) {
 var matrix = new Array()
 for (i = 0; i < db.length; i++)
 {
 var stringaConfronto = db[i].toUpperCase()
 var stringaUtile = stringaConfronto.substring(0,
stringaConfronto.lastIndexOf("|"))
  for (j = 0; j < stringa_formata.length; j++)
  {
   var stringaUtente = stringa_formata[j].toUpperCase()
   if (stringaUtile.indexOf(stringaUtente) != -1)
   {
    matrix[matrix.length] = db[i]
    break
   }
  }
 }
 verifica(matrix)
}
function cerca_and (stringa_formata) {
 var matrix = new Array()
 for (i = 0; i < db.length; i++)
 {
 var coincidenza = true
 var stringaConfronto = db[i].toUpperCase()
 var stringaUtile = stringaConfronto.substring(0,
stringaConfronto.lastIndexOf("|"))
  for (j = 0; j < stringa_formata.length; j++)
  {
   var stringaUtente = stringa_formata[j].toUpperCase()
   if (stringaUtile.indexOf(stringaUtente) == -1)
   coincidenza = false
  }
  if (coincidenza)
   matrix[matrix.length] = db[i]
 }
 verifica(matrix)
}
function verifica (matrix) {
 if (matrix.length == 0)
 {
  doc.open()
  doc.write('<html><head></head><body bgcolor="white"><hr size="1"
noshade>')
  doc.write('<font face="Verdana, Arial, sans" size="3"><div
align="center">Spiacente, non ho trovato elementi
corrispondenti</div></font><hr size="1" noshade></body></html>')
  doc.close()
 }
 else
 {
  array_risultati = matrix.sort()
  stampa_risultati(array_risultati, s, o)
 }
}
function stampa_risultati(array_risultati, s, o) {
 var limite = (array_risultati.length < s + o) ? array_risultati.length : (s
+ o)
 doc.open()
 doc.write('<html><head><meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1"></head><body bgcolor="white">' + '<table width="90%"
border="0">' + '<tr><td><hr size="1" noshade><tr><td><font face="Verdana,
Arial, sans" size="2"><b>Chiave di ricerca: ' + '<i>' +
parent.frames[0].document.forms[0]._query.value + '</i>' + '<br>Risultati:'
+ '<i>' + ' da ' + (s + 1) + ' a ' + limite + ' di ' +
array_risultati.length + '</i></font>' + '</b><hr size="1" noshade>')
  for (i = s; i < limite; i++)
  {
   var splitta = array_risultati[i].split("|")
   doc.write('<tr><td><dl><font face="Verdana, Arial, sans" size="2">' +
splitta[0].link(splitta[2]) + '<dd><i>' + splitta[1] + '</i></font>')
  }
 doc.write('<tr><td><hr size="1" noshade></table>')
 visualizza_pulsanti (array_risultati, s, o)
 doc.write('</body></html>')
 doc.close()
}
function visualizza_pulsanti(array_risultati, s, o) {
 doc.write('<form><div align="center">')
 if (s > 0)
 {
  doc.writeln('<input type="button" value="precedenti"
onClick="parent.frames[0].stampa_risultati(parent.frames[0].array_risultati,
' + (s - o) + ', ' + o + ')">')
 }
 if (s + o < array_risultati.length)
 {
  doc.writeln('<input type="button" value="successivi"
onClick="parent.frames[0].stampa_risultati(parent.frames[0].array_risultati,
' + (s + o) + ', ' + o + ')">')
 }
 doc.write('</div></form>')
}
</script>
</head>
<body bgcolor="white">
<basefont face="Arial, Verdana, sans" size="2">
<form name ="cerca" onSubmit="filtro(document.forms[0].elements[0].value);
return false">
<div align="center">
    <table width="550" border="0">
      <tr>
        <td width="500">
          <p>CERCA NEL NOSTRO DATABASE&nbsp;
            <input type="text" name="_query" size="30">
          </p>
        </td>
        <td width="50">
          <div align="center"><font face="Verdana, Arial, Helvetica,
sans-serif" size="2"><a href="help.html" target="bot">HELP</a></font></div>
        </td>
      </tr>
    </table>
  </div>
</form>
</body>
</html>
_________________________________________________________________________________________________________________
Grazie!
Pino

 io vorrei fare una modifica ( ma non ci sto riuscendo ) :
Non puoi chiedere nel sito da dove lo hai scaricato? Magari qualcuno trova
il tempo di leggersi tutta 'sta pappardella, ma normalmente chiedere
all'autore un aiuto č la strada piů veloce...
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.