Avatar billede anetteogjesper Nybegynder
03. november 2005 - 19:06 Der er 11 kommentarer

Fejl på siden

Hej
Min forside melder fejl: 'stips' er ikke defineret. Hvad betyder det og hvad skal jeg ændre?
Min forside findes på www.5xX.dk.
mvh
Anette
Avatar billede softspot Forsker
03. november 2005 - 19:23 #1
Det betyder at den variabel du forsøger at referere ikke findes (i det mindste ikke på det tidspunkt hvor du forsøger at referere den). Hvad der skal rettes er nærmest umuligt (med begrænsede resurser) at finde ud af pga. den forholdsvis dårligt strukturerede kode... Et vildt gæt kunne dog være at der mangler en reference til en anden js-fil hvori denne variabel er defineret.
Avatar billede psykochicken Nybegynder
03. november 2005 - 19:59 #2
Fejl: stips is not defined
Kildefil: http://www.xxxxx.dk/HomeSearch1.js
Linje: 344
Avatar billede anetteogjesper Nybegynder
03. november 2005 - 22:45 #3
Hej psykochicken
Tak, jeg fandt fejlen... ville gerne give dig point, men så skal du trykke på svar i stedet for kommentar :-)
Har dog lige et spørgsmål mere med koden.
Fejlen lå i at jeg havde fjernet noget jeg ikke måtte, men hvordan fjerne jeg det så uden at ødelægge det?
Det er denne sætning: var stips='<P><H6>Søg på siden</H6>'
og så nede i linie 344:
wb='<H4>Søgeresultat</H4><P>' + stk + ' sider fundet ud af ' + fundet +  ' i databasen.</P>' + wb}
if (find[1]=='+' || find[1]=='') {
document.write(stips)}
else {
if (wb=='undefined') {
document.write(stips)}
else {
if (stk==0) {
document.write(ingf + stips)}
else {
document.write(wb)}}}

Desuden kunne jeg vildt godt tænke mig at søge resultaterne åbnede på en ny side i stedet for som nu, kan du hjælpe?
Avatar billede psykochicken Nybegynder
04. november 2005 - 17:11 #4
Godt du fandt fejlen ;o)
Det eneste jeg gjorde var at åbne siden i FF og kopiere fejlmeddelelsen fra javascriptkonsollen - det skal jeg ikke have point for.

Hvis du vil have resultatet vist i et nyt vindue, vil jeg, uden at være dykket ned i koden, mene at du erstatter din onclick-event på søg-knappen med ex.
onclick="window.open('dinnyeside.php','new','width=800, height=600');

og flytter din gamle onclick-event + henvisningen til HomeSearch1.js over på dinnyeside.php, som så skal indeholde noget i stil med:

<body onload="
// Hent søgeteksten fra siden, der åbnede denne side = opener:
var ordtq = opener.document.forms[0].find.value
var leng2q = ordtq.length
var lavigenq=0
...
...osv...
...
if (location.href.indexOf('?')!=-1){
  location.href.substring(0,location.href.indexOf('?'))+'?'+ud;}
else
  {location.href+'?'+ud;}
">
<SCRIPT LANGUAGE="JavaScript" SRC="HomeSearch1.js"></SCRIPT>
</body>

Der skal form. rettes mere til, men det er et sted at starte. Håber du kan bruge det :o)

/psc
Avatar billede anetteogjesper Nybegynder
06. november 2005 - 22:43 #5
Hej
Jeg kan ikke finde ud af det snøft...
Jeg indsætter koden i håb om at blive hjulpet lidt videre :-)
<FORM>
<INPUT TYPE="TEXT" NAME="find">&nbsp;&nbsp;
<INPUT TYPE="button" VALUE="Søg" NAME="soegekanp" ONCLICK="
var ordtq = form.find.value
var leng2q = ordtq.length
var lavigenq=0
var findq=new Array;
var ordsq=0
while (ordtq.indexOf(' ') != -1) {
ordsq+=1
stedq=ordtq.indexOf(' ')+1
findq[ordsq]=ordtq.substring(0,stedq)
ordtq=ordtq.substring(stedq,leng2q)
lavigenq=1}
if (lavigenq==1) {
ordsq+=1
findq[ordsq]=ordtq}
else {
ordsq=1
findq[1]=ordtq}
var ords4q=ordsq
while (ords4q!=0) {
if (findq[ords4q].indexOf(' ')==0){
var tempeq=findq[ords4q].length
findq[ords4q]=findq[ords4q].substringq(1,tempeq)}
if (findq[ords4q].lastIndexOf(' ')!=-1){
var tempeq=findq[ords4q].length -1
findq[ords4q]=findq[ords4q].substring(0,tempeq)}
ords4q-=1}
var ords5q=ordsq
var ud=findq[ords5q]
ords5q-=1
while (ords5q !=0) {
ud=findq[ords5q] + '+' + ud
ords5q-=1}
if (location.href.indexOf('?')!=-1){
location.href=location.href.substring(0,location.href.indexOf('?'))+'?'+ud;}
else
{location.href=location.href+'?'+ud;}
">
</FORM>
Avatar billede roenving Novice
07. november 2005 - 14:14 #6
Hrm, for det første er det hensigtsmæssigt at oprette en javascript-funktion, for det andet forstår jeg ikke, hvad du lige ønsker ?-)

-- måske er det bare:

<form>
<input type="text" name="find">&nbsp;&nbsp;
<input type="button" value="Søg" name="soegeknap" onclick="soeg(this)">
</form>

<script type="text/javascript">
function soeg(elm){
  var txt = elm.form.find.value;
  if(txt == "")
    return;
  location.href = location.href.split("?")[0] + "?" + txt.replace(/ +/g,"+");
}
</script>
Avatar billede anetteogjesper Nybegynder
10. november 2005 - 23:09 #7
Hej

Det jeg ønsker er at min søgemaskine åbner i et nyt vindue med resultater, men nå man trykker på et resultat åbner i hovedruden "Main"
Kan du hjælpe mig med det?
Avatar billede roenving Novice
11. november 2005 - 06:02 #8
Hrm, der skal laves voldsomt om i det script, du bruger ...

Scriptet ser ud som om det er næsten 10 år gammelt, og bruger teknikker, som ikke er nødvendige i dag.

-- faktisk ser det ud til, at det skal skrives om helt fra bunden ...

For det første benytter det sig af en reload fordi forfatteren åbenbart ikke kendte andet end document.write, der har i allermindst de sidste 5 år været mange andre muligheder ...

For det andet bruger han en oldnordisk streng-behandling, hvilket ovenstående vel illustrerer, for mit lille script (07/11-2005 14:14:52 !-) udfører præcis det samme som det, du viser 06/11-2005 22:43:46 ...

-- hrm, jeg kigger på det !o]
Avatar billede anetteogjesper Nybegynder
11. november 2005 - 12:56 #9
Der lyder lækkert tak :-)
Avatar billede roenving Novice
24. december 2005 - 22:05 #10
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>
Avatar billede roenving Novice
24. december 2005 - 22:18 #11
PS. Dette eksempel er for testens skyld lagt direkte i et html-element, når jeg selv lægger det op, vil det ligge i to eksterne .js-filer, een med selve koden, og een med oprettelsen af søgetekster m.m. og objekt-oprettelse.

Desuden vil der være to forskellige søgninger, da objekt-baseringen er lavet ud fra et ønske om at kunne lave flere søgninger, f.eks. en intern og en ekstern, derfor også forespørgslen om at måtte bruge jeres site som mål !o]
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester