Hallo,

habe folgen code.
ein kleiner Katalog mit eine +Button und nun brauch ich noch einen -Button, aber ich bekomme es nicht hin.

Da ich diesen Code nicht selbst geschrieben sondern irgendwann man wo runtergelsen hab, weiß ichnicht so weiter.

Vielleicht kann mr hier jemand helfen.
Gruß Tiara

// Warenkorb
// =========



// --- Parameter ---

var cookie_warenkorb = "Warenkorb" // Name des Cookies fuer die Artikel
var separator_ware = ";" // Trenner zwischen zwei Artikel beim Cookie
var separator_daten = "/" // Trenner zwischen Artikelnummer und Anzahl beim Cookie
var separator_feld = "." // Trenner fuer die Feldname
var field_prefix = "Warenkorb" // Gemeinsamer Praefix fuer alle Feldnamen

var titel_artikel_nr = "Artikelnr." // Titel der Artikelnummer bei Warenkorbliste
var titel_bezeichnung = "Bezeichnung" // Titel der Bezeichnung bei Warenkorbliste
var titel_preis = "Einzelpreis" // Titel des Preises bei Warenkorbliste
var titel_gesamtpreis = "Gesamtpreis" // Titel des Gesamtpreises bei Warenkorbliste
var titel_mwst = "MwSt." // Titel des Mehrwertsteuerprozentsatzes bei Warenkorbliste
var titel_menge = "Menge" // Titel der Menge bei Warenkorbliste

// Attribute fuer die Kassen-Tabelle
var kasse_attribute_tabelle = "BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"2\""

// Attribute fuer die Titelzeile der Kassen-Tabelle
var kasse_attribute_titel = "ALIGN=\"CENTER\" VALIGN=\"MIDDLE\" BGCOLOR=\"#DDDDDD\""
var kasse_attribute_titel_menge = ""
var kasse_attribute_titel_artikel_nr = ""
var kasse_attribute_titel_bezeichnung = ""
var kasse_attribute_titel_preis = ""
var kasse_attribute_titel_gesamtpreis = ""

// Attribute fuer die Artikelzeile der Kassen-Tabelle
var kasse_attribute_zeile = "ALIGN=\"LEFT\" VALIGN=\"MIDDLE\""
var kasse_attribute_zeile_menge = ""
var kasse_attribute_eingabe_menge = "SIZE=\"8\" MAXLENGTH=\"12\""
var kasse_attribute_zeile_artikel_nr = ""
var kasse_attribute_zeile_bezeichnung = ""
var kasse_attribute_zeile_preis = "ALIGN=\"RIGHT\""
var kasse_attribute_zeile_gesamtpreis = "ALIGN=\"RIGHT\""
var kasse_attribute_eingabe_gesamtpreis = "SIZE=\"8\" READONLY onChange=\"warenkorb_readonly(this)\""

// Attribute fuer die Meldungszeile der Kassen-Tabelle (bei keinem Artikel)
var kasse_attribute_meldung = "ALIGN=\"CENTER\" VALIGN=\"TOP\" BGCOLOR=\"#FF6666\""

// Meldungstext, falls keine Artikel vorhanden sind
var kasse_keine_artikel = "Keine Artikel im Warenkorb!"


// --- Interne Variablen ---
var produkte = new Array()
var fehler_gemeldet = false

// --- Hilfsfunktionen ---

// Objekt Produkt anlegen
function makeProdukt(artikel_nr, bezeichnung, preis, mwst)
{
this.artikel_nr = artikel_nr
this.bezeichnung = bezeichnung
this.preis = preis

this.menge = 0
}

// Produkt dem Array hinzufuegen (extern nutzbar!)
function Produkt(artikel_nr, bezeichnung, preis, mwst)
{
produkte[produkte.length] = new makeProdukt(artikel_nr, bezeichnung, preis, mwst)
}

// Cookie lesen
function getCookie(cookie_name)
{
var cookie_array = document.cookie.split(";")
var cookie_teile

var i
for(i = 0; i < cookie_array.length; i++)
{
cookie_teile = cookie_array[i].split("=")
if(cookie_teile[0].substring(0, 1) == " ")
cookie_teile[0] = cookie_teile[0].substring(1, cookie_teile[0].length)
if(cookie_teile[0] == cookie_name)
return unescape(cookie_teile[1])
}

return ""
}

// Cookie schreiben
function setCookie(cookie_name, cookie_wert, gueltigkeitszeitraum)
{
var ablauf_datum = new Date()

ablauf_datum.setTime(ablauf_datum.getTime() + (gueltigkeitszeitraum ? gueltigkeitszeitraum : (1000 * 60 * 60)))
document.cookie = cookie_name + "=" + escape(cookie_wert) + "; " + "expires=" + ablauf_datum.toGMTString()
}

// Komma in Punkt umwandeln
function Komma2Punkt(s)
{
return String(s).replace(/,/g, ".")
}

// Punkt in Komma umwandeln
function Punkt2Komma(s)
{
return String(s).replace(/\./g, ",")
}

// Zwei Nachkommastellen
function TwoDigits(x)
{
var temp = Math.round(x * 100 + .1)
var nach = temp % 100
var vor = (temp - nach) / 100
return vor + "." + (nach < 10 ? "0" : "") + nach
}

// Rechts- oder Linksbuendig mit Leerzeichen auffuellen
function fuelle(s, l, li)
{
while(s.length < l)
{
if(li)
s += " "
else
s = " " + s
}
return s
}

// Zeichenkette mit konstanten Zeichen
function str(c, l)
{
var i
var s = ""
for(i = 0; i < l; i++)
s += c
return s
}

// Menge bei einem bestimmten Artikel setzen
function setMenge(artnr, wert)
{
var i
for(i = 0; i < produkte.length; i++)
if(produkte[i].artikel_nr == artnr)
{
produkte[i].menge = wert
return
}
}

// Produktposition im Array ermitteln
function getProdukt(artikel_nr)
{
var i
for(i = 0; i < produkte.length; i++)
if(produkte[i].artikel_nr == artikel_nr)
return i
return null
}

// --- Hauptfunktionen ---

// Warenkorb aus Cookie auslesen
function getWarenkorb()
{
var w_array = getCookie(cookie_warenkorb).split(separator_ware)
var w_teile

// Mengen auf 0 setzen
var i
for(i = 0; i < produkte.length; i++)
produkte[i].menge = 0

// Warenkorb leer?
if(w_array == "" || w_array == "leer")
return

// Warenkorb analysieren
var i
for(i = 0; i < w_array.length; i++)
{
w_teile = w_array[i].split(separator_daten)
setMenge(w_teile[0], parseFloat(w_teile[1]))
}
}

// Warenkorb in Cookie schreiben
function setWarenkorb()
{
var w_cookie = ""
var i

// Alle Produkte mit Mengen ungleich 0 in String schreiben
for(i = 0; i < produkte.length; i++)
if(produkte[i].menge != 0)
w_cookie += ((w_cookie == "") ? "" : separator_ware) + produkte[i].artikel_nr + separator_daten + produkte[i].menge

// Cookie setzen
setCookie(cookie_warenkorb, (w_cookie == "") ? "leer" : w_cookie)
}

// Globale Felder setzen
function globalfelder(name, set, f, e)
{
var i

// Feld Warenkorb mit Artikelliste fuellen
if(name == "Warenkorb")
{
var laenge_artikel_nr = titel_artikel_nr.length
var laenge_bezeichnung = titel_bezeichnung.length
var laenge_preis = titel_preis.length

var laenge_menge = titel_menge.length
var laenge_gesamtpreis = titel_gesamtpreis.length
var temp

// Breite der Spalten ermitteln
for(i = 0; i < produkte.length; i++)
{
if(produkte[i].artikel_nr.length > laenge_artikel_nr)
laenge_artikel_nr = produkte[i].artikel_nr.length
if(produkte[i].bezeichnung.length > laenge_bezeichnung)
laenge_bezeichnung = produkte[i].bezeichnung.length
temp = Punkt2Komma(produkte[i].menge).length
if(temp > laenge_menge)
laenge_menge = temp
temp = Punkt2Komma(TwoDigits(produkte[i].preis))
if(temp.length > laenge_preis)
laenge_preis = temp.length
temp = Punkt2Komma(produkte[i].mwst).length

temp = Punkt2Komma(TwoDigits(produkte[i].menge * produkte[i].preis)).length
if(temp > laenge_gesamtpreis)
laenge_gesamtpreis = temp
}

// Titelzeile aufbauen
var s = fuelle(titel_menge, laenge_menge, true) + " " +
fuelle(titel_artikel_nr, laenge_artikel_nr, true) + " " +
fuelle(titel_bezeichnung, laenge_bezeichnung, true) + " " +
fuelle(titel_preis, laenge_preis, false) + " " +

fuelle(titel_gesamtpreis, laenge_gesamtpreis, false) + "\n" +
str("-", laenge_menge) + " " +
str("-", laenge_artikel_nr) + " " +
str("-", laenge_bezeichnung) + " " +
str("-", laenge_preis) + " " +

str("-", laenge_gesamtpreis)

// Artikelliste anfuegen
for(i = 0; i < produkte.length; i++)
if(produkte[i].menge != 0)
s += "\n" + fuelle(Punkt2Komma(produkte[i].menge), laenge_menge, true) + " " +
fuelle(produkte[i].artikel_nr, laenge_artikel_nr, true) + " " +
fuelle(produkte[i].bezeichnung, laenge_bezeichnung, true) + " " +
fuelle(Punkt2Komma(TwoDigits(produkte[i].preis)), laenge_preis, false) + " " +

fuelle(Punkt2Komma(TwoDigits(produkte[i].menge * produkte[i].preis)), laenge_gesamtpreis, false)

// Liste setzen
document.forms[f].elements[e].value = s
return true
}

// Feld GesamtMwSt berechnen und setzen
else if(name == "GesamtMwSt")
{
var s = 0
for(i = 0; i < produkte.length; i++)
s += produkte[i].menge * produkte[i].preis * (produkte[i].mwst / 100)
document.forms[f].elements[e].value = Punkt2Komma(TwoDigits(s))
return true
}

// Feld Gesamtpreis berechnen und setzen
else if(name == "Gesamtpreis")
{
var s = 0
for(i = 0; i < produkte.length; i++)
s += produkte[i].menge * produkte[i].preis
document.forms[f].elements[e].value = Punkt2Komma(TwoDigits(s))
return true
}

// Feld Gesamtartikel berechnen und setzen
else if(name == "Gesamtartikel")
{
var s = 0
for(i = 0; i < produkte.length; i++)
if(produkte[i].menge != 0)
s++
document.forms[f].elements[e].value = s
return true
}

// Ungueltiges Feld
return false
}

// Produktfelder fuellen
function produktfelder(name, set, f, e, allfields)
{
// Artikelnummer von Namen trennen
f_teile = name.split(separator_feld)
if(f_teile.length != 2)
{
if(!fehler_gemeldet)
alert("Falsche Schreibweise: " + name + ".\nErlaubt: Artikelnummer.Bezeichner")
fehler_gemeldet = true
return
}

// Position in Produktliste ermitteln
var pnr = getProdukt(f_teile[0])
if(pnr != null)
{
// Alle Felder setzen?
if(allfields)
{
// Felder setzen?
if(set)
{
var gesetzt = false
switch(f_teile[1])
{
case "Menge":
document.forms[f].elements[e].value = Punkt2Komma(produkte[pnr].menge)
break
case "ArtikelNr":
document.forms[f].elements[e].value = produkte[pnr].artikel_nr
gesetzt = true
break
case "Bezeichnung":
document.forms[f].elements[e].value = produkte[pnr].bezeichnung
gesetzt = true
break
case "Preis":
document.forms[f].elements[e].value = Punkt2Komma(TwoDigits(produkte[pnr].preis))
gesetzt = true
break
case "Gesamtpreis":
break
default:
if(!fehler_gemeldet)
alert("Tippfehler: " + f_teile[1] + "\nErlaubt: Menge, ArtikelNr, Bezeichnung, Preis, MwSt, Gesamtpreis")
fehler_gemeldet = true
}
if(gesetzt)
document.forms[f].elements[e].defaultValue = document.forms[f].elements[e].value
}

// Felder auswerten?
else
{
switch(f_teile[1])
{
case "Menge":
var wert = parseFloat(Komma2Punkt(document.forms[f].elements[e].value))
if(isNaN(wert))
wert = 0
produkte[pnr].menge = wert
break
}
}
}

// Summenfelder (nur Setzen, nicht auswerten)
if(set)
{
switch(f_teile[1])
{
case "Gesamtpreis":
document.forms[f].elements[e].value = Punkt2Komma(TwoDigits(produkte[pnr].menge * produkte[pnr].preis))
gesetzt = true
break
}
if(gesetzt)
document.forms[f].elements[e].defaultValue = document.forms[f].elements[e].value
}
}
}

// Alle Formulare und Elemente untersuchen
function scanForms(set, allfields)
{
var f
for(f = 0; f < document.forms.length; f++)
{
var e
for(e = 0; e < document.forms[f].elements.length; e++)
{
// Gueltiger Feldname?
if(document.forms[f].elements[e].name.substring(0, field_prefix.length + 1) == (field_prefix + separator_feld))
{
var name = document.forms[f].elements[e].name.substring(field_prefix.length + 1)
if(!globalfelder(name, set, f, e))
produktfelder(name, set, f, e, allfields)
}
}
}
}

// --- Extern zugaengliche Funktionen ---

// Pruefung auf Veraenderung des Inhalts
function warenkorb_readonly(o)
{
if(o.value != o.defaultValue)
o.value = o.defaultValue
}

// Warenkorb loeschen
function warenkorb_loeschen()
{
var i
for(i = 0; i < produkte.length; i++)
produkte[i].menge = 0
scanForms(true, true)
}

// Liste fuer Kasse darstellen
function warenkorb_kasse()
{
getWarenkorb()
var i
with(document)
{
writeln("<TABLE " + kasse_attribute_tabelle + ">")
writeln("<TR " + kasse_attribute_titel + ">")
writeln("<TH " + kasse_attribute_titel_menge + ">" + titel_menge + "</TH>")
writeln("<TH " + kasse_attribute_titel_artikel_nr + ">" + titel_artikel_nr + "</TH>")
writeln("<TH " + kasse_attribute_titel_bezeichnung + ">" + titel_bezeichnung + "</TH>")
writeln("<TH " + kasse_attribute_titel_preis + ">" + titel_preis + "</TH>")

writeln("<TH " + kasse_attribute_titel_gesamtpreis + ">" + titel_gesamtpreis + "</TH>")
writeln("</TR>")

// Alle Artikel ausgeben
var artikel_gefunden = false
for(i = 0; i < produkte.length; i++)
{
if(produkte[i].menge)
{
artikel_gefunden = true
writeln("<TR " + kasse_attribute_zeile + ">")
writeln("<TD " + kasse_attribute_zeile_menge + "><INPUT TYPE=\"TEXT\" " + kasse_attribute_eingabe_menge + " NAME=\"Warenkorb." + produkte[i].artikel_nr + ".Menge\" VALUE=\" + Punkt2Komma(produkte[i].menge) + \" onChange=\"warenkorb_aktualisieren()\"></TD>")
writeln("<TD " + kasse_attribute_zeile_artikel_nr + ">" + produkte[i].artikel_nr + "</TD>")
writeln("<TD " + kasse_attribute_zeile_bezeichnung + ">" + produkte[i].bezeichnung + "</TD>")
writeln("<TD " + kasse_attribute_zeile_preis + ">" + Punkt2Komma(TwoDigits(produkte[i].preis)) + "</TD>")

writeln("<TD " + kasse_attribute_zeile_gesamtpreis + "><INPUT TYPE=\"TEXT\" " + kasse_attribute_eingabe_gesamtpreis + " NAME=\"Warenkorb." + produkte[i].artikel_nr + ".Gesamtpreis\" VALUE=\" + Punkt2Komma(TwoDigits(produkte[pnr].menge * produkte[pnr].preis)) + \" onChange=\"warenkorb_aktualisieren()\"></TD>")
writeln("</TR>")
}
}

// Ersatzmeldung, falls Warenkorb leer
if(!artikel_gefunden)
{
writeln("<TR " + kasse_attribute_meldung + ">")
writeln("<TD COLSPAN=\"6\">" + kasse_keine_artikel + "</TD>")
writeln("</TR>")
}
writeln("</TABLE>")
}
}

// Funktion fuer Ereignishandler onLoad (Element BODY)
function warenkorb_onload()
{
getWarenkorb()
scanForms(true, true)
}

// Funktion fuer Ereignishandler onUnload (Element BODY)
function warenkorb_onunload()
{
scanForms(false, true)
setWarenkorb()
}

// Aktualisieren aller Summenfelder
function warenkorb_aktualisieren()
{
scanForms(false, true)
scanForms(true, false)
}

// EOF

Für den + Button nutze ich add(this.form,'Warenkorb.435.Menge') hab es mit
remove(this.form,'Warenkorb.435.Menge') für den -Button. Klappt aber nicht.