Nu har jeg endelig fundet tid til at kigge på det, og nedenstående er den første prototype, som du endelig må prøve og fortælle mig, hvordan der kan forbedres, hvilke ting, du synes mangler m.m.m.
(Jeg vil også lægge den ud som een af mine working demos, så jeg skal også høre om det er i orden, at jeg bruger jeres side som eksempel på søgning !-)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
<title>Simpel søgemaskine</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
html,body{height:100%;margin:0px;border:0px;padding:0px;font-family:tahoma,verdana,arial,sans-serif;font-size:small;}
</style>
<script language="javascript" type="text/javascript">
var searches = new Array();
function rS(searchArray,noResultText,oneResultText,moreResultText,defaultTarget,resultElm){
if(!searchArray || !resultElm){
alert("Fejl ,-(");
return false;
}
var fInArray = false;
for(i=0; searches.length > i; i++){
fInArray = fInArray || searches[i] == this;
}
if(!fInArray)
searches[searches.length] = this;
else return false;
this.sArray = searchArray;
this.r0Text = noResultText ? noResultText.replace(/YYY/,this.sArray.length) : "Ingen resultater fundet ud af " + this.sArray.length + " sider i databasen.";
this.r1Text = oneResultText ? oneResultText.replace(/YYY/,this.sArray.length) : "Fundet 1 resultat ud af " + this.sArray.length + " sider i databasen.";
this.r2Text = moreResultText ? moreResultText.replace(/YYY/,this.sArray.length) : "Fundet XXX resultater ud af " + this.sArray.length + " sider i databasen.";
this.target = defaultTarget ? defaultTarget : "_self";
this.target = this.target.toLowerCase() == "blank" || this.target.toLowerCase() == "new" ? "_blank" : this.target.toLowerCase() == "parent" ? "_parent" : this.target.toLowerCase() == "top" || this.target.toLowerCase() == "browser" ? "_top" : this.target;
this.elm = resultElm;
}
rS.prototype.search = function(searchText){
var numRes = newRes = 0;
var results = new Array();
var sFull = new Array();
var sPart = new Array();
var sWords = searchText.split(" ");
for(i=0; sWords.length > i; i++){
sFull[i] = new RegExp("\\b" + sWords[i] + "\\b","i");
sPart[i] = new RegExp(sWords[i],"i");
}
for(i=0; this.sArray.length > i ; i++){
newRes = 0;
for(j=0; sWords.length > j; j++){
newRes += this.sArray[i][0].match(sFull[j]) ? 100 : this.sArray[i][0].match(sPart[j]) ? 50 : 0;
}
if(newRes > 0){
results[numRes] = new Array();
results[numRes][0] = this.sArray[i][1];
results[numRes][1] = this.sArray[i][2];
results[numRes][2] = this.sArray[i][3] ? this.sArray[i][3] : this.target;
results[numRes][3] = Math.round(newRes/sWords.length);
numRes++;
}
}
var elm = (typeof this.elm == "string") ? document.getElementById(this.elm) : this.elm;
for(i=elm.childNodes.length; i > 0; i--)
elm.removeChild(elm.childNodes[i-1]);
if(numRes == 0){
elm.appendChild(document.createTextNode(this.r0Text));
}else if(numRes == 1){
elm.appendChild(document.createTextNode(this.r1Text));
elm.appendChild(document.createElement("br"));
elm.appendChild(document.createTextNode("" + results[0][3] + "% : "));
elm.appendChild(this.createLink(results[0][0],results[0][1],results[0][2]));
}else{
elm.appendChild(document.createTextNode(this.r2Text.replace(/XXX/,numRes)));
elm.appendChild(document.createElement("br"));
results.sort(this.mySort);
for(i=0; numRes > i; i++){
elm.appendChild(document.createTextNode("" + results[i][3] + "% : "));
elm.appendChild(this.createLink(results[i][0],results[i][1],results[i][2]));
elm.appendChild(document.createElement("br"));
}
}
}
rS.prototype.createLink = function(link,lText,lTarget){
var l = document.createElement("a");
l.setAttribute("href",link);
l.setAttribute("target",lTarget);
l.appendChild(document.createTextNode(lText));
return l;
}
rS.prototype.mySort = function(a,b){
return a[3]>b[3] ? -1 : a[3]==b[3] ? 0 : 1;
}
/* Format for søgestrenge:
["søgeord adskilt af mellemrum","link, f.eks.
http://www.noget.dk/show.php?id=123","text til resultat","evt. target"]
-- hvis target udelades bruges defaultTarget, som specificeret i søgeoprettelsen
*/
var searchStrings = new Array();
searchStrings[searchStrings.length] = ['dametøj kjoler nederdele',"
http://www.xxxxx.dk/vareOversigt.php?category=19&ucategory=1","Kjoler og nederdele Dametøj","Main"];
searchStrings[searchStrings.length] = ['Bukser dametøj clamal',"
http://www.xxxxx.dk/vareOversigt.php?category=19&ucategory=4",'Bukser Dametøj'];
searchStrings[searchStrings.length] = ['badetøj dametøj badedragt bikini',"
http://www.xxxxx.dk/vareOversigt.php?category=19&ucategory=7",'Badetøj Dametøj'];
searchStrings[searchStrings.length] = ['skjorter dametøj',"
http://www.xxxxx.dk/vareOversigt.php?category=19&ucategory=39",'Skjorter Dametøj'];
searchStrings[searchStrings.length] = ['cardigan strikbluser strikjakke dametøj',"
http://www.xxxxx.dk/vareOversigt.php?category=19&ucategory=41",'Strik og Cardigan Dametøj'];
searchStrings[searchStrings.length] = ['dametøj bluser t-shirts',"
http://www.xxxxx.dk/vareOversigt.php?category=19&ucategory=2",'Bluser og T-shirts Dametøj'];
searchStrings[searchStrings.length] = ['jakker frakker dametøj',"
http://www.xxxxx.dk/vareOversigt.php?category=19&ucategory=42",'Jakker Dametøj'];
searchStrings[searchStrings.length] = ['undertøj BH sæt underbukser bøjle dametøj',"
http://www.xxxxx.dk/vareOversigt.php?category=19&ucategory=64",'Undertøj Dametøj'];
/*Format for oprettelse af en søgning:
opret en ny variabel, som sættes lig en ny udgave af et søgeobjekt:
var search1 = new rS(søgeordsVariabel, "tekst ved ingen resultater", "tekst ved 1 resultat", "tekst ved flere søgeresultater", "default target", "Element, søgeresultat skrives i");
søgeordsVariabel: Som det ses herunder skal kun navnet på variablen angives
Alle resultattekster: Hvis det samlede antal sider skal angives, bruges YYY på det sted, og XXX for antallet af fundne resultater
-- iøvrigt bruges en dansk default-tekst, hvis der ikke står noget, men de _skal_ angives, evt. som tomme strenge
0-resultat-tekst: Eksempel kan være: "No results found in YYY pages"
1-resultat-tekst: Eksempelvis: "Found 1 result in YYY pages"
Flere resultater-tekst: F.eks. "Found XXX results in YYY pages"
Default target: Angiv et framenavn, hvis links skal åbne i en anden frame, default er samme vindue/frame
-- andre lovlige og genkendte ord er: 'blank' og 'new', der laver et nyt vindue, 'parent', der hopper ud i en evt. modervindue samt 'top' og 'browser', som overtager hele browser-vinduet
Resutat-element: Angiv elementets id (det er også muligt at referere direkte til elementet, men da det først findes efter vinduets load skal man være forsigtig med det !-)
*/
var search1 = new rS(searchStrings,"","","","blank","minDiv");
</script>
</head>
<body>
<form id="minForm" name="minForm" onsubmit="if(this.soeg.value!=this.soeg.defaultValue){search1.search(this.soeg.value)};return false;">
Søgeord: <input id="soeg" name="soeg" type="text" value="Skriv søgeord adskilt med mellemrum" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="50">
<input type="submit" value="Søg">
</form>
<br>
<br>
<div id="minDiv">Søgeresultater</div>
</body>
</html>