Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    MDR interno, problema: var xxxxx = new Array()

    E' un motore di ricerca interno (lato client). Funzionante!

    E' composto da 7 file. Questi:

    form.htm
    risultati.htm

    ric_form.js
    ric_search.js

    ric_primi.js
    ric_secondi.js
    ric_dolci.js

    Piccolo PROBLEMA

    Se nella pagina "risultati.htm" richiamo soltanto 1 degli ultimi 3 file .js della lista qui sopra (ad esempio: ric.dolci.js), il motore di ricerca funziona perfettamente. E fin qui nessun problema.

    Se invece, nella pagina "risultati.htm" li richiamo tutti e 3 (ric_primi.js , ric_secondi.js , ric_dolci.js), il motore di ricerca funziona perfettamente, sģ, ma... ignora i primi 2 (ric_primi.js e ric_secondi.js).

    Di seguito vi posto i codici dei 7 file. ATTENZIONE! Del file "risultati.htm" vi posto le due versioni, vale a dire quella descritta nel mio primo caso (FUNZIONANTE al 100%), e quella descritta nel secondo caso (funzionante IN PARTE, ovvero 1/3).

    Ecco i codici:

    Questo č il file form.htm

    codice:
    <html>  <head> <title>RICETTE</title> <script language="JavaScript1.3" type="text/javascript" src="ric_form.js">  </script> </head>  <body>  <form name="ric_Form" onsubmit="search_form(ric_Form);return false">   
    
    <input type="text" name="d" size="20"> <input type="button" value="Go"   onclick="search_form(ric_Form)"> </p> </form>  
    
    Enter CIOCCOLATO or FRAGOLE or CREMA in the example above.</p> </body> </html>
    Questo č il file risultati.htm (FUNZIONANTE al 100%)

    codice:
    <html>  <head> <title>RICETTE SEARCH RESULTS</title> <script language="JavaScript1.3" type="text/javascript" src="ric_form.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_dolci.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_search.js"></script> </head>  <body>  <form name="ric_Form" onsubmit="search_form(ric_Form);return false">   
    
    <input type="text" name="d" size="20"> <input type="button" value="Go"   onClick="search_form(ric_Form)"> </p> </form> <script language="JavaScript1.3" type="text/javascript">return_query()</script> <script language="JavaScript1.3" type="text/javascript">num_ric()</script>   
    
    page(s) found </p>  <hr>  
    
    <script language="JavaScript1.3" type="text/javascript"> out_ric() </script> </p> </body> </html>
    Questo č il file risultati.htm (funzionante IN PARTE, ovvero 1/3)

    codice:
    <html>  <head> <title>RICETTE SEARCH RESULTS</title> <script language="JavaScript1.3" type="text/javascript" src="ric_form.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_primi.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_secondi.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_dolci.js"></script> <script language="JavaScript1.3" type="text/javascript" src="ric_search.js"></script> </head>  <body>  <form name="ric_Form" onsubmit="search_form(ric_Form);return false">   
    
    <input type="text" name="d" size="20"> <input type="button" value="Go"   onClick="search_form(ric_Form)"> </p> </form> <script language="JavaScript1.3" type="text/javascript">return_query()</script> <script language="JavaScript1.3" type="text/javascript">num_ric()</script>   
    
    page(s) found </p>  <hr>  
    
    <script language="JavaScript1.3" type="text/javascript"> out_ric() </script> </p> </body> </html>
    Questo č il file ric_form.js

    codice:
    var results_location = "risultati.htm";  function search_form(ric_Form) { 	if (ric_Form.d.value.length > 0) { 		document.cookie = "d=" + escape(ric_Form.d.value); 		window.location = results_location; 	} }
    Questo č il file ric_search.js

    codice:
     var include_num = 1; var bold = 0;  var cookies = document.cookie; var p = cookies.indexOf("d=");  if (p != -1) { 	var st = p + 2; 	var en = cookies.indexOf(";", st); 	if (en == -1) { 		en = cookies.length; 	} 	var d = cookies.substring(st, en); 	d = unescape(d); } var od = d; var m = 0; if (d.charAt(0) == '"' && d.charAt(d.length - 1) == '"') { 	m = 1; }  var r = new Array(); var co = 0;  if (m == 0) { 	var woin = new Array(); 	var w = d.split(" "); 	for (var a = 0; a < w.length; a++) { 		woin[a] = 0; 		if (w[a].charAt(0) == '-') { 			woin[a] = 1; 		} 	} 	for (var a = 0; a < w.length; a++) { 		w[a] = w[a].replace(/^\-|^\+/gi, ""); 	} 	a = 0; 	for (var c = 0; c < xxxxx.length; c++) { 		pa = 0; 		nh = 0; 		for (var i = 0; i < woin.length; i++) { 			if (woin[i] == 0) { 				nh++; 				var pat = new RegExp(w[i], "i"); 				var rn = xxxxx[c].search(pat); 				if (rn >= 0) { 					pa++; 				} else { 					pa = 0; 				} 			} 			if (woin[i] == 1) { 				var pat = new RegExp(w[i], "i"); 				var rn = xxxxx[c].search(pat); 				if (rn >= 0) { 					pa = 0; 				} 			} 		} 		if (pa == nh) { 			r[a] = xxxxx[c]; 			a++; 		} 	} 	co = a; }  if (m == 1) { 	d = d.replace(/"/gi, ""); 	var a = 0; 	var pat = new RegExp(d, "i"); 	for (var c = 0; c < xxxxx.length; c++) { 		var rn = xxxxx[c].search(pat); 		if (rn >= 0) { 			r[a] = xxxxx[c]; 			a++; 		} 	} 	co = a;  }  function return_query() { 	document.ric_Form.d.value = od; }  function num_ric() { 	document.write(co); }  function out_ric() { 	if (co == 0) { 		document.write('Your search did not match any documents.
    
    Make sure all keywords are spelt correctly.
    Try different or more general keywords.'); 		return; 	} 	for (var a = 0; a < r.length; a++) { 		var os = r[a].split("^"); 		if (bold == 1 && m == 1) { 			var br = "" + d + ""; 			os[2] = os[2].replace(pat, br); 		} 		if (include_num == 1) { 			document.write(a + 1, '. ', os[0], '
    ', os[2], '
    
    '); 		} else { 			document.write('', os[0], '
    ', os[2], '
    
    '); 		} 	}  }
    Questo č il file ric_primi.js

    codice:
    var xxxxx = new Array();  xxxxx[0] = "SPAGHETTI^spaghetti.htm^Spaghetti al pomodoro, al ragł di carne, alla carbonara...^pomodoro, ragł di carne, carbonara"; xxxxx[1] = "PENNETTE^pennette.htm^Pennette alla viennese, all'arrabbiata...^viennese, arrabbiata"; xxxxx[2] = "MACCHERONI^maccheroni.htm^Maccheroni e pancetta, con i funghi...^pancetta, funghi";
    Questo č il file ric_secondi.js

    codice:
    var xxxxx = new Array();  xxxxx[0] = "POLLO^pollo.htm^Pollo allo spiedo, alla diavola...^spiedo, diavola"; xxxxx[1] = "BISTECCA^bistecca.htm^Cotoletta alla milanese, fiorentina, filetto al pepe...^cotoletta, milanese, fiorentina, pepe";
    Questo č il file ric_dolci.js

    codice:
    var xxxxx = new Array();  xxxxx[0] = "CROSTATA^crostata.htm^Crostata di mele, alle fragole, ai mirtilli...^mele, fragole, mirtilli"; xxxxx[1] = "GELATO^gelato.htm^Gelato al pistacchio, al cioccolato...^pistacchio, cioccolato"; xxxxx[2] = "PASTICCERIA^pasticceria.htm^Cornetto alla crema, bignč...^cornetto, crema, bignč";
    In conclusione.

    Sņ benissimo che potrei raggruppare in un unico file (.js), i 3 file in questione (ric_primi.js , ric_secondi.js , ric_dolci.js). Oppure incorporare i 3 file nel file ric_search.js, Ma... li vorrei mantenere separati per un discorso di "gestione" e semplicitą, visto che le varie liste delle ricette (gli Array) si allungheranno (e se ne potranno aggiungere anche altre, tipo: contorni, formaggi, ecc.).

    Quindi vi chiedo...

    ...č possibile farli funzionare tutti e 3, mantenendoli separati (come file esterni)?

    Thanks. Ciao

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ogni volta ridefinisci l'array... ovvio che l'ultima sovrascrive le precedenti

    metti solo nel file principale:

    var xxxxx = new Array();

    e negli altri

    xxxxx[xxxx.length] = "CROSTATA^crostata.htm^Crostata di mele, alle fragole, ai mirtilli...^mele, fragole, mirtilli";
    xxxxx[xxxx.length] = "GELATO^gelato.htm^Gelato al pistacchio, al cioccolato...^pistacchio, cioccolato";
    xxxxx[xxxx.length] = "PASTICCERIA^pasticceria.htm^Cornetto alla crema, bignč...^cornetto, crema, bignč";

    eccetera...

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Della serie: "Come perdersi in un bicchier d'acqua".
    Vabbč dai, ma sņ fare anche di peggio...

    Grazie br1. Adesso funziona tutto.

    Ciao

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 © 2025 vBulletin Solutions, Inc. All rights reserved.