• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Webshop

Modrick

New member
Ich habe folgendes Shopproblem. Ich habe ein Warenkorbsystem auf Javascriptbasis folgender Struktur, das auch "funktioniert", allerdings kann ich im Warenkorb nicht die Anzahl der bestellten Artikel verändern bzw. komplett löschen. Kann mir jemand helfen ?
Hier das Skript:

Bestellseite:
<form><input type="text" size="2" name="menge" value="1"> <input type="button" value="ok" onClick="parent.einladen(this.form.menge.value,'Art.Nr., Artikel',Preis)"></form>

Warenkorb:
<script language="JavaScript">
gesamtpreis = 0;
for (i=0;i<parent.mengen.length;i++)
{
document.write('<tr><td>' + parent.mengen + '</td><td>' + parent.artikel + '</td><td align=right>' + parent.preise + '</td></tr>');
document.write('<input type=hidden name=\"Positon' + (i + 1) + '\" value=\"' + parent.mengen + ' ' + parent.artikel + ' ' + parent.preise + '\">');
gesamtpreis = gesamtpreis + (parent.mengen * parent.preise);
}
gesamtpreis = gesamtpreis * 100;
gesamtpreis = Math.round(gesamtpreis);
gesamtpreis = gesamtpreis / 100;
document.write('<tr><td colspan=2 align=right>Gesamtpreis:</td><td align=right>' + gesamtpreis + '</td></tr>');
</script>
 
Wenn du diese Zeile weiter erläutern würdest:
parent.einladen(this.form.menge.value,'Art.Nr., Artikel',Preis)

Das Löschen des (geschriebenen) Warenkorbs ist schwer möglich.
Ich könnte es nur über DOM, aber das funktioniert nur im IE5+ und NS6+
 
Hallo Bjoern, danke schonmal für die erste Antwort.
Mit
<form><input type="text" size="2" name="menge" value="1"> <input type="button" value="ok" onClick="parent.einladen(this.form.menge.value,'Art.Nr., Artikel',Preis)"></form>

habe ich ein Eingabefeld auf der Bestellseite, bei dem die gewünschte Menge des Artikels eingetragen wird. Der "Ok" Button speichert die eingegebene Menge, Artikelnummer und Preis.

Auf der Warenkorbseite ist es bisher leider nur möglich den Warenkorb durch Reload vollständig zu löschen, nicht aber gespeicherte Anzahl einzeln zu verändern oder zu löschen, das müsste doch per Javascript auch wieder abzuändern sein, oder nicht ?

Was ist denn DOM ?
IE5 und Netscape 6 ist schlecht, weil doch noch recht viele mit aelteren Versionen rumsurfen.
 
DOM= Dynamic Object Modell

Das ist ein vom W3C-Konsortium standartisiertes DHTML.
Und es gibt nur diese Möglichkeit, etwas von einer Seite zu löschen.
Außer du verwendest ein "textarea"-Feld, da kann man auch nachträglich etwas löschen.
(das kann der User selbst machen, in dem er die betreffenden Zeilen einfach selbst löscht)
 
Hallo!

@Bjoern:
Also deine Aussagen sind etwas verwirrend:

DOM -> Document Object Model -> das hat jeder Browser aber evtl in unterschiedlichen und speziell angepassten(z.b. IE) Versionen.

Nun, es wäre gut wenn man von Modrick noch den JS-Code aus der Framesetdatei erfahren könnte, dann kann ich bestimmt helfen.
 
Hier noch der Code der Framesetseite:

<script language="JavaScript">
mengen = new Array();
artikel = new Array();
preise = new Array();

function einladen(neumenge,neuartikel,neupreis)
{
llang = mengen.length;
mengen[llang] = neumenge;
artikel[llang] = neuartikel;
preise[llang] = neupreis;
alert(neumenge + ' ' + neuartikel + ' wurde(n) in den Warenkorb gelegt.')
}
</script>

Es handelt sich um das Warenkorbscript von MM. Ich habs schon in der Hoffnung gesucht, dort würde ich was zu dem "Problem" finden aber leider find ich es auf der Webseite nicht mehr.

Auf der Bestellseite habe ich vollständigerhalber übrigens noch folgendes Javascript:

<script language="JavaScript">
function einladen(menge)
{
alert(menge);
}
</script>
 
So, Hallo!

Was wir hier benötigen ist eine Funktion die den Inhalt des Warenkorbs ändern kann, nun gut, versuchen wirs mal:

Code:
function changeAll()
{
    for (i=0;i<parent.mengen.length;i++) 
   { 
        eval("actMenge = myWK.menge" + i + ".value;");
        parent.mengen[i] = actMenge;
   }
}

document.write('<form name="myWK">');
for (i=0;i<parent.mengen.length;i++) 
{ 
    if(parent.mengen[i] > 0)
    {    
        document.write('<tr><td><input type="text" name="menge'+ i +'" value="' + parent.mengen[i] + '"></td><td>' + parent.artikel[i] + '</td><td align=right>' + parent.preise[i] + '</td></tr>'); 
        document.write('<input type=hidden name=\"Positon' + (i + 1) + '\" value=\"' + parent.mengen[i] + ' ' + parent.artikel[i] + ' ' + parent.preise[i] + '\">'); 
        gesamtpreis = gesamtpreis + (parent.mengen[i] * parent.preise[i]); 
    }
}
gesamtpreis = gesamtpreis * 100; 
gesamtpreis = Math.round(gesamtpreis); 
gesamtpreis = gesamtpreis / 100; 
document.write('<tr><td colspan=2 align=right>Gesamtpreis:</td><td align=right>' + gesamtpreis + '</td></tr>');
document.write('<tr><td colspan="3" align="center"><input type="button" onClick="changeAll()"></td></tr>');
document.write('</form>');

Das ganze gehört auf die Seite wo der Warenkorb dargestellt wird, bzw. wird dein Skript gegen dieses ersetzt.
Versuchs mal, keine Garantie für Funktionalität ;)
 
Zuletzt bearbeitet:
Nuja

Nuja einladen funktioniert noch mit wunderschönem Feld zum ändern :)
Doch dann wenn ich den Wert änder bekomme ich einen Javascript Error.
"myWK is not defined"
Desweiteren ist mein Absendebutton auf der Bestellseite verschwundibus weg
 
Hallo!

Ändere mal:
Code:
eval("actMenge = myWK.menge" + i + ".value;");
zu:
Code:
actMenge = document.forms['myWK'].elements['menge' + i + '].value;

und dann:

Code:
document.write('<tr><td colspan="3" align="center"><input type="button" onClick="changeAll()"></td></tr>');

nach:

Code:
document.write('<tr><td colspan="3" align="center"><input type="button" onClick="changeAll()" value="  Speichern  "></td></tr>');
 
Mit dieser Korrektur bleibt der Warenkorb ganz leer, es scheint als wuerde es nicht funktionieren. Vielleicht gibts noch irgendwo ein ähnliches Javascript, das ich reinkopieren könnte ?
 
Hallo!

Blödfug:

Folgendes noch ausbessern:

Code:
actMenge = document.forms['myWK'].elements['menge' + i + '].value;

zu:

Code:
actMenge = document.forms['myWK'].elements['menge' + i].value;
 
nujanuja

Nuja alles wieder da, Warenkorb wird schön eingeladen aber Änderung des Warenkorbs bringt bei Aktualisierung leider folgenden Fehler: document.forms.myWK has no properties.
 
Hallo!

Nun mach mal aus den ganzen document.write ein document.writeln.
Dann machste aus den <input type="button" onClick="changeAll()" value=" Speichern ">
ein
<input type="submit" onsubmit="changeAll()" value=" Speichern ">

Wenns dann auch noch nicht geht dann stell das ganze mal online, dann schau ich mal drauf.
 
Zurück
Oben