webForumDet fria alternativet

Problem med lokal sökmotor på hemsidan

JavaScript

13 svar · 733 visningar · startad av Wass

Medlem sedan juni 20057 inlägg
Frågan#1

Hej alla smarta!!

Jag har ett litet problem med min lokala sökmotor det är så att
om du inte skriver in någon söktext och bara trycker på sök knappen.
Så får du upp alla indexerade sidorna.
Det jag vill är att användaren skall få upp en ruta som säger
"Du måste skriva ett sökord tex Bil!" om man bara trycker på sök.
Jag har sökt på forumet och hittat att man kan använda onsubmit jag har provat fler varianter men får det inte att fungera.
Jag hoppas ni förstår!!

Här kommer html koden.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" lang="sv" xml:lang="sv" />
<link rel="stylesheet" type="text/css" href="sok.css" />
<title>Min sida</title>

<script type="text/javascript" src="sok.js">
</script>

<script type="text/javascript" src="instruktioner.js">
</script>

</head>
<body>

<fieldset class="sokruta"><legend><b>Sökmotor</b></legend>
<form name="sokForm" onsubmit="sok()"action="sokForm" class="formular"/>
<input name="sokString" type="text" size="52" class="sokruta"/>
<input type="submit" name="knapp" value="Sök" class="knapp"/><br/>
<input type="checkbox" name="direkt" class="kryssruta"/>Om sökningen lyckas, ta mig direkt till första träffen!
<br />
<br />
<center><a href="instruktioner.js" onmouseover="instruktioner('instruktioner.html')" class="visatraff">Instruktioner</a></center>
</fieldset>

</body>
</html>

Och här kommer sok.js filen

function sok() {

var sokText = sokForm.sokString.value
var sokGemener = sokText.toLowerCase()
var sokOrd = sokGemener.split("+")
var hit = 0
var direkt = sokForm.direkt.checked

document.write ("<html>")
document.write ("<head>")
document.write ("<title>Resultat av sökningen i JavaScript</title>")
document.write ("<link rel=stylesheet type=text/css href=sok.css>")
document.write ("</head>")
document.write ("<body>")
document.write ("<div class=visa>")
document.write ("Din sökning på: <b>" + sokText + " </b>gav följande resultat:" + "<p/>")
document.write ("<table class=resultat cellpadding=10>")

var nycklar = new Array(5)
nycklar[0] = new Array("sida1.html", "bil", "ratt", "växelspak", "motor")
nycklar[1] = new Array("sida2.html", "cykel", "cyklar", "styre", "hjälm")
nycklar[2] = new Array("sida3.html", "båt", "motor", "knop", "ankare")
nycklar[3] = new Array("sida4.html", "roder", "vinge", "landning", "flyga")
nycklar[4] = new Array("sida5.html", "simma", "dyka", "hoppa", "luft")

var rubriker = new Array(5)
rubriker[0] = "Bilar"
rubriker[1] = "Cyklar"
rubriker[2] = "Båtar"
rubriker[3] = "Flygplan"
rubriker[4] = "Dykning"

var beskrivningar = new Array(5)
beskrivningar[0] = "Den här avdelningen handlar uteslutande om bilar."
beskrivningar[1] = "Det här är en avdelning som handlar om mina cyklar."
beskrivningar[2] = "Om du gillar båtar ska du ta en närmare titt på den här avdelningen."
beskrivningar[3] = "Att flyga kan vara spännade, på den här sidan hittar du mera information."
beskrivningar[4] = "Detta är en avdelning som bara handlar om dykning."

for(i=0;i<5;i++) {

  for(j=0;j\<5;j++) {

     for(k=0;k\<5;k++) {

        if(nycklar*\[j\].indexOf(sokOrd\[k\]) \> -1) {

           if(direkt == true) {
           var adress = "http://www.minwebbplats.se/" + nycklar*\[0\]
           location.reload(adress)
           }

           document.write ("\<tr\>")
           document.write ("\<td valign=top class=visatraff\>")
           document.write ("\<b class=visatraff\>" + rubriker *\+ "\</b\>" + "\<br/\>")
           document.write (beskrivningar *\+ "\<br/\>")
           document.write ("\<a class=visatraff href=http://www.minwebbplats.se/" + nycklar*\[0\] + "\><http://www.minwebbplats.se/>" + nycklar*\[0\] + "\</a\>")
           document.write ("\</td\>")
           document.write ("\</tr\>")
           hit = 1

        }

     }

  }

}

if(hit == 0) {
document.write ("<tr><td class=visatraff>")
document.write ("Inga av nyckelorden matchade de som du sökte på." + "<p>")
document.write ("</td></tr>")
}

document.write ("</table>")
document.write ("<p>")
document.write ("<a class=visatraff href=sok.html>Ny sökning!</a>")
document.write ("</div>")
document.write ("</body>")
document.write ("</html>")

}******

Medlem sedan aug. 20039 340 inlägg
#2
<form name="sokForm" onsubmit="[b]return[/b] sok()" action="sokForm" class="formular"/>

...

function sok() {

var sokText = sokForm.sokString.value
if (!sokText[s].value[/s]){
alert("Du måste skriva något...");
return false;
}
var sokGemener = sokText.toLowerCase()

Glöm inte return där jag har satt ut det!

/r Detta exempel blev felaktigt. Stryk value enligt figuren!

Medlem sedan aug. 20039 340 inlägg
#3

För övrigt, ett tips på hur du kan göra din array-kod lite bättre:

var nycklar = [];
nycklar.push(["sida1.html", "bil", "ratt", "växelspak", "motor"]);
nycklar.push(["sida2.html", "cykel", "cyklar", "styre", "hjälm"]);
nycklar.push(["sida3.html", "båt", "motor", "knop", "ankare"]);
nycklar.push(["sida4.html", "roder", "vinge", "landning", "flyga"]);
nycklar.push(["sida5.html", "simma", "dyka", "hoppa", "luft"]);

var rubriker = ["Bilar", "Cyklar", "Båtar", "Flygplan", "Dykning"];

var beskrivningar=[ "Den här avdelningen handlar uteslutande om bilar.",
"Det här är en avdelning som handlar om mina cyklar.",
"Om du gillar båtar ska du ta en närmare titt på den här avdelningen.",
"Att flyga kan vara spännade, på den här sidan hittar du mera information.",
"Detta är en avdelning som bara handlar om dykning."];

for(i=0;i<nycklar.length;i++) {

for(j=0;j<nycklar[i].length;j++) {

for(k=0;k<rubriker.length;k++) {

Jag orkar inte förklara i detalj hur koden fungerar, men den göra samma sak som den kod du hade innan, med skillnaden att den dels är kompaktare, dels att du kan lägga till och ta bort poster utan att ändra femmorna därnere.

Medlem sedan juni 20057 inlägg
#4

Tack för svaret nitro2k01 !

Nu får jag upp meddelandet både när jag bara trycker på sök och skriver i ett sök ord vad är det som kan vara fel??

Medlem sedan nov. 20017 144 inlägg
#5

nitro2k01 skrev:

Glöm inte return där jag har satt ut det!

:)

Medlem sedan jan. 20021 122 inlägg
#6

/r Nu blev det något fel... Missade på något sätt de sista fyra inläggen :q

Medlem sedan aug. 20039 340 inlägg
#7

Wass skrev:

Tack för svaret nitro2k01 !

Nu får jag upp meddelandet både när jag bara trycker på sök och skriver i ett sök ord vad är det som kan vara fel??

Det var jag som skrev value på ett ställe där det inte skulle stå det. Så här ska det se ut:

<form name="sokForm" onsubmit="return sok()" action="sokForm" class="formular"/>

...

function sok() {

var sokText = sokForm.sokString.value
if (!sokText){
alert("Du måste skriva något...");
return false;
}
var sokGemener = sokText.toLowerCase()
Medlem sedan juni 20057 inlägg
#8

suddat

Medlem sedan juni 20057 inlägg
#9

Tack för svaret nitro2k01 !

Vi gick visst om varandra. Ditt sista inlägg rätt till felet!!!!
Och tack för tipset med js filen skall sätta mig och titta på det nu.

Jag tackar och bugar :)

Medlem sedan juni 20057 inlägg
#10

Hej nitro2k01

När jag provade ditt förslag på ändring i jsfilen så fungerade det inte först.
Så det tog mig en stund att se vad som var fel :)

Du var kanske för snabb på tangentbordet :) för du hade skrivit

var beskrivningar[ "Den här avdelningen handlar uteslutande om bilar.",
"Det här är en avdelning som handlar om mina cyklar.",
"Om du gillar båtar ska du ta en närmare titt på den här avdelningen.",
"Att flyga kan vara spännade, på den här sidan hittar du mera information.",
"Detta är en avdelning som bara handlar om dykning."];

när det skall var

var beskrivningar=[ "Den här avdelningen handlar uteslutande om bilar.",
"Det här är en avdelning som handlar om mina cyklar.",
"Om du gillar båtar ska du ta en närmare titt på den här avdelningen.",
"Att flyga kan vara spännade, på den här sidan hittar du mera information.",
"Detta är en avdelning som bara handlar om dykning."];

Men nu fungerar allt som det skall :)
Jag vill tacka dig för ditt tips om jsfilen det kommer bli mycket smidigare att jobba med.

Medlem sedan aug. 20039 340 inlägg
#11

Wass skrev:

var beskrivningar[ "Den här avdelningen handlar uteslutande om bilar.",
...
när det skall var

var beskrivningar=[ "Den här avdelningen handlar uteslutande om bilar.",

Jo i regel så testar jag inte kod som jag på postar på forum, så ibland smyger det sig in småfel. Det ska självklart stå som du har skrivit. Jag ha ändrat det i mitt eget inlägg också nu.

Medlem sedan juni 20057 inlägg
#12

Hej nitro2k01
Jag hoppas inte du blev sur för mitt för inlägg för det var inte min avsikt :q

Nu har jag ändrat min stora jsfil det tog 2.5tim och funkade perfekt försat gången jag provade. :)

Nu har jag en ny fråga?
När du har sökt och får träff och sen klickar dig vidare på länken så uppnas sidan i samma fönster.Jag skulle vilja att det uppnades ett nytt fönster. Som när man använder target="_blank".
Tror du att det går att fixa :q

Medlem sedan aug. 20039 340 inlägg
#13

Nejdå, jag blev inte sur. Jag berättade hur det är. Jag testar ofta inte end längre bitar med kod, och därför kan de innehålla fel. (Eller de innehåller fel enligt Murphy's lag, första paragrafen)

Nåväl, eftersom resultaten skrivs ut i vanlig HTML, är det bara att lägga till target="_blank" där.

document.write ("<a [b]target=\"_blank\"[/b] class=visatraff href=http://www.minwebbplats.se/" + nycklar[i][0] + ">[url]http://www.minwebbplats.se/[/url]" + nycklar[i][0] + "</a>")

Backslasharna är till för att escape citationstecknen så att webbläsaren inte tror att strängen är slut innan den är det.

Medlem sedan juni 20057 inlägg
#14

Tack för svaret nitro2k01 !

Det var skönt att höra att du inte blev sur :D

Jag trodde allt att det var i den koden men jag jag hittade inte rätt när jag försökte lägga in target_"blank" själv.

document.write ("<a  class=visatraff href=http://www.minwebbplats.se/[B]targrt_"blank"[/B] + nycklar[i][0] + ">[url]http://www.minwebbplats.se/[/url]" + nycklar[i][0] + "</a>")

God natt och sov så gott :)

254 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)