Gewollte Fehlermeldung bei JS Suchmaschine?

digiTAL

Erfahrenes Mitglied
Eine Hinweismeldung in JavaScript Suchmaschine einbeziehen?

Hier das Bsp. Suchmaschine.
Wenn ich jetzt in das Suchfeld FIAT oder VW eingebe erscheint in einem PopUpfenster der jeweilige Link dazu. Aber wenn ich z.B. BMW eingebe geht nur ein leeres PopUpfenster auf, weil ja der BMW nicht in der JS Datenbank vorhanden ist.
Meine Frage:
Wie kann ich bei dieser JavaScript Suchmaschine eine gewohlte Fehlermeldung bringen, sozusagen das ein bestimmtes Produkt oder Wort nicht vorhanden ist?

PHP:
<html><head>
<script language="JavaScript">
<!--
function Car(type, color, price, url) {
this.type = type;
this.color = color;
this.price = price;
this.url = url;
}
var database = new Array();

database[0] = new Car("VW Golf","blau","5.000","vw.html");
database[1] = new Car("Fiat Punto","schwarz","7.000","fiat.html");
function suchen() { 
var eingabe = document.forms[0].elements[0].value;
var hits = new Array(); 
var j = 0;
for(var i = 0; i < database.length; i++) 
if(carstring(database[i]).search(eingabe) > -1) 
hits[j++] = i;
ausgabe(hits);
}
function carstring(car) {
return car.type+" "+car.color+" "+car.price;
}
function ausgabe(hits) {
self.name = "mainwindow"; //setzt Fensternamen
var win = open('','Treffer','width=300,height=300');
with(win.document) {
write('<html><head>');
write('<title>Treffer</title>');
write('</head><body>'); 
write('<table>'); 
for(var i = 0; i < hits.length; i++) {
var car = database[hits[i]];
write('<tr><td>');
write('<a href="'+car.url+'"');
write('target="'+self.name+'">');
write(car.type+'</a></td>');
write('<td>'+car.color+'</td>');
write('<td>'+car.price+'</td></tr>'); 
}
write('</table></body></html>');
}
}
// -->
</script>
</head><body>
<form method="post" onsubmit="suchen()">
 <input type="text" value=""><br>
 <input type="submit" value="Suchen">
</form> 
</body></html>
 
Zuletzt bearbeitet:
Code:
function suchen() 
{ 
var eingabe = document.forms[0].elements[0].value; 
var hits = new Array(); 
var j = 0; 
for(var i = 0; i < database.length; i++) 
 {
 if(carstring(database[i]).search(eingabe) > -1) 
  {
  hits[j++] = i; 
  }
 }
(hits>0)?ausgabe(hits):alert('kein Treffer'); 
}
 
Zuletzt bearbeitet:
ist nicht wirklich das was ich wollte!
die suchmaschine soll ja nicht permanent kein treffer angeben sondern nur,
wenn das wort nicht in der datenbank aufgelistet ist.

also in der datenbank steht jetzt "vw" und "fiat" drin aber wenn ich jetzt z.b.
audi (ist nicht in der datenbank aufgelistet) eingebe, dann soll er einen hinweis
geben "keinen treffer"

sorry, wenn ich mich vorher falsch ausgedrückt hatte.:rolleyes:
 
Wenn ich das richtig sehe, hat fatalus nur ein kleines Detail vergessen:
Code:
function suchen() 
{ 
var eingabe = document.forms[0].elements[0].value; 
var hits = new Array(); 
var j = 0; 
for(var i = 0; i < database.length; i++) 
 {
 if(carstring(database[i]).search(eingabe) > -1) 
  {
  hits[j++] = i; 
  }
 }
(length(hits)>0)?ausgabe(hits):alert('kein Treffer'); 
}
 
das funktioniert irgendwie nicht.
die wörter die ich in der datenbank gespeichert habe
und in das suchfeld eingebe, kommt trotzdem "kein treffer" obwohl doch
das ein "volltreffer" wäre
 
jo,...das war nicht ganz korrekt von mir :-)
merkwürdigerweise hats aber funktioniert...keine Ahnung warum:-(

Ebenso merkwürdig ist das Verhalten beim Suchen....
search() erwartet eine regulären Ausdruck als Parameter....du übergibst ihm lediglich einen String.
Das merkwürdige daran...es hat auch funktioniert, zwar nicht mit vw, dafür aber mit dem kompletten
Autonamen in korrekter Gross/Kleinschreibung.

Angesichts dessen könntest du es mal so probieren:
Code:
function suchen()
{

var eingabe = new RegExp(document.forms[0].elements[0].value,'i');
var hits = new Array();
var j = 0;
for(var i = 0; i < database.length; i++)
    {
    if(carstring(database[ i ]).search(eingabe) > -1)
        {
        hits[j++] = i;
        }
    }
(hits.length>0)?ausgabe(hits):alert('kein Treffer');

}

...da ist mir noch was aufgefallen...beim erneuten Aufruf von ausgabe() öffnest du kein neues Dokument, dadurch werden die neuen Suchtreffer zu den vorhandenen dazugeschrieben.

Du kannst das verhindern, wenn du die übliche Vorgehensweise beim Beschreiben von Dokumenten anwendest:
Code:
//Dokument öffnen
document.open();
//Hineinschreiben
document.write();
//Dokument schliessen
document.close();
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück