Artikelliste in Shop wird nicht angezeigt

  • Themenstarter Themenstarter Merbi
  • Beginndatum Beginndatum
M

Merbi

Guten Morgen zusammen,

ich habe mir nach einem Tutorial einen kleinen Shop für ein Informatik - Projekt gebastelt.
Der Shop besteht aus der Datei cart.htm (Warenkorb):

Code:
<h1>Warenkorb</h1>

<table>
<tr>
<td>Artikel</td> <td>Stückpreis</td> <td>Anzahl</td>
</tr>
<tr>
<script language="JavaScript">
<!--
var data=getData();
/* Daten aus dem Cookie lesen */

for(i=0;i<data.length;i++)
{
if(data[i]>0)
{
/* Wenn die Stückzahl größer als 0 ist */
document.writeln("<tr>");
document.writeln("<td>"+Artikel[i]+"</td><td>"+
Preis[i]+".-</td><td>"+data[i]);
document.writeln("</tr>");
}
}
//-->
</script>

</tr>
</table>

<form>
<input type="button" value="Warenkorb leeren" onClick="resetCookie();">
<input type="button" value="Zum Shop" onClick="location.href='shop.htm';">
<input type="button" value="Bestellung aufgeben" onClick="location.href='bestellung.htm';">
</form>

Aus der Datei shop.htm:

Code:
<script language="JavaScript" type="text/JavaScript">
writeShop();
</script>

Die Datei bestellung.htm:

Code:
<script language="JavaScript">
<!--
function writeOrder()
{
var data=getData();
/* Stückzahlen aus dem Cookie auslesen */
var rechnung=document.forms['Bestellung'].elements['Rechnung'];
/* Die Textarea in der die Aufstellung geschrieben wird */
rechnung.value+="\t\t\t Ihre Bestellung\n\n";
/* Die \t sind Tabulatoren, die \n Zeilenumbrüche */
rechnung.value+="\tBezeichnung\tStückpreis\tAnzahl\tGesamtpreis\n";
/* Die erste Zeile */

for(i=0;i<data.length;i++)
{
if(data[i]>0)
{
/* Stückzahl > 0 */
/* neue Zeile mit BEZEICHNUNG EINZELPREIS STÜCKZAHL KOSTEN */
rechnung.value+="\t"+Artikel[i]+"\t"+Preis[i]+".-\t\t"+data[i]+"\t"+data[i]*Preis[i]+".-\n";
}
}

var summe=0;
/* Gesamtsumme */
for(i=0;i<data.length;i++)
{
summe+=data[i]*Preis[i];
/* Stückzahl * Preis aufaddieren */
}
rechnung.value+="\n\tSumme:\t\t\t\t\t"+summe+".-";
/* Gesmatsumme in die Textarea schreiben */
}
//-->
</script>

</head>

<body onLoad="writeOrder();">

<h1>Bestellung</h1>

<form action="mailto:deine@email.com" method="post" name="Bestellung">
<!-- Das Formular soll per eMail verschickt werden -->
<textarea name="Rechnung" cols="100" rows="10" readonly="readonly>" </textarea><br>

<!-- Angaben zum Käufer -->
Name <input type="Text" name="Name" value="" size="25" maxlength="100"> <br>
Straße / Nummer <input type="Text" name="Strasse_Nr" value="" size="25" maxlength="100"> <br>
PLZ / Ort <input type="Text" name="Adresse" value="" size="25" maxlength="100"> <br>
Land <input type="Text" name="Land" value="Deutschland" size="25" maxlength="100"> <br>
<input type="Button" value="Zurück" onClick="location.href='shop.html';">
<input type="Submit" value="Bestellung aufgeben">
</form>

Und letzlich noch die Datei shop.js:

Code:
var Artikel=new Array("Artikel1","Artikel2","Artikel3");
var Preis=new Array(5,7,9);
function writeShop()
{
var data=getData();
/* Daten aus Cookie auslesen */

document.writeln("<form name=\"Shop>\"");
document.writeln("<table>")

for(i=0;i<Artikel.length;i++)
{
document.writeln("<tr>");
/* Zeilenbeginn */
document.writeln("<td>"+Artikel[i]+"</td> <td>"+
Preis[i]+"</td> <td><input type=\"text\" size=\"5\" value=\""+
data[i]+"\"></td>");
document.writeln("</tr>");
/* Zeilenende */
}

/* Neue Zeile mit 2 Buttons */
document.writeln("<tr>"+
"<td colspan=\"3\" align=\"center\">"+
"<input type=\"button\" value=\"Bestellen\" onClick=\"setCookie();\">"+
"<input type=\"button\" value=\"Warenkorb einsehen\" onClick=\"showCart();\">"+
"</td>"+
"</tr>");
document.writeln("</table>");
document.writeln("</form>")
}
function showCart()
{
setCookie();
location.href="cart.htm";
}
function setCookie()
{
var wert="";
for(i=0;i<Artikel.length;i++)
{
/* Stückzahlen einsammeln */
wert += document.forms["Shop"].elements[i].value+"|";
}

document.cookie = "einkauf="+wert+";";
location.href="bestellung.htm";
}
function getData()
{
var content=new Array();
if(document.cookie)
{
var wert=document.cookie.substring(8,document.cookie.length);
/* Zeichen von 0 bis 8 ist "einkauf=" */
for(i=0;wert.indexOf("|")>-1;i++)
{
var d=wert.substring(0,wert.indexOf("|"));
/* Daten bis zum Trennstrich auslesen */

(besser:)
content[content.length] = d;
/* Daten als neues Element im Array einfügen */
wert=wert.substr(wert.indexOf("|")+1,wert.length);
/* bereits gelesene Daten wegschneiden und wieder von vorne beginnen */
}
return content;
/* gib das gefüllte Array zurück */
}

/* Sonderfall: Es gibt noch kein Cookie */
for(i=0;i<Artikel.length;i++)
{
content[i] = '0';
}
return content;
}
function resetCookie()
{
var bestellung="";
for(i=0;i<Artikel.length;i++)
{
bestellung+="0|"
/* Stückzahl 0 setzen */
}
document.cookie="einkauf="+bestellung+";";
location.reload();
}

Alle Seiten werden richtig angezeigt nur die "Startseite" also Artikelübersicht nicht.
Ich finde den Fehler nicht, habe mich aber an das Tutorial gehalten.

LG Daniel
 
Hi,

drei Tippfehler sind mir aufgefallen.

bestellung.htm:
Code:
<textarea name="Rechnung" cols="100" rows="10" readonly="readonly>"
Die schliessende eckige Klammer muss nach dem Anführungszeichen stehen.
Code:
<input type="Button" value="Zurück" onClick="location.href='shop.html';">
Das "l" ist zuviel.


shop.js:
In der Funktion writeShop hat sich wieder eine eckige Klammer vor ein Anführungszeichen gemogelt.
Code:
document.writeln("<form name=\"Shop>\"");
Schau mal, ob es funktioniert, wenn du das ausgebessert hast.

Ciao
Quaese
 
Vielen Dank für die schnelle Antwort.
Habe die Fehler nun behoben, leider wird die Artikelliste immer noch nicht angezeigt.

LG Daniel
 

Neue Beiträge

Zurück