Werbel: Formular läuft nicht

Ich starte gerade damit, mich mit JavaScript umzutun und habe versucht ein Formular mit viele Abfragen zum Laufen zu bringen. Es läuft aber einfach nicht. Kann mir jmd. sagen, wo das Problem liegt??
<html>

<head>
<title>
forfor
</title>
<script language="javascript">
function Formular(karte)
{

var i;
var kartenart;
var kartentyp;
var test;

var num1=document.karte.nummer1.value;
var num2=document.karte.nummer2.value;
var num3=document.karte.nummer3.value;
var num4=document.karte.nummer4.value;
var nummer_ok=false;
var karteninhaber=document.karte.inhaber.value;
var msg;
var msg_inhaber;
var monat_ende;
var jahr_ende;
var heute;
var monat_heute;
var jahr_heute;
var gueltig;

//Welcher Knopf ist gedrückt? Und entsprechenden Wertzuweisung.

for(i=0;i<=document.karte.art.value.length;i++){
if (document.karte.art[i].checked){
kartenart=document.karte.art[i].value;
}
}
switch(kartenart)
{
case "a": kartentyp="American Express"; break;
case "v": kartentyp="Visa"; break;
case "m": kartentyp="Mastercard"; break;
default: kartentyp="leer"; return false; break;}

if(num1==""||num2==""||num3=="")

{alert("Sie müssen etwas eintragen");
return false;
}
else{
if(kartenart=="a"
&&num1.length==4
&&num2.length==6
&&num3.length==5
&&num4.length==0)
{alert("Korrektes Amex-Format");
nummer_ok=true;}

if((kartenart="m"||kartenart="v")
&&num1.length==4
&&num2.length==4
&&num3.length==4
&&num4.length==4
&&!((isNaN(num4)){
alert("Korrektes Kartenformat");
nummer_ok=true;
}
}
//Karteninhaber prüfen

if (karteninhaber==""){
msg_inhaber="Es geht um Ihren Namen";
msg_inhaber+="und nicht um ein Schweizer Nummernkonto\n\n";
msg_inhaber+="Also geben Sie Ihre richtigen Daten an!";
alert(msg_inhaber);
return false;
}

for(i=0;i<document.karte.inhaber.value.length;i++){
test=document.karte.inhaber.value.length[i]
if(test>="A" && test<="Z"
||test=="."
||test=="-"
||test==","
||test==" ")
{}
else{
msg="Sie haben eine falsche Angabe bzgl. Ihres Names gemacht";
alert(msg);
return false;
}
}

//Zeit

monat_ende=document.karte.monat.value;
jahr_ende=document.karte.jahr.value;
heute=newDate();

monat_heute=heute.getMonth();
jahr_heute=heute.getFullYear();
monat_heute++;
alert(monat_heute+"/"+jahr_heute);

if(jahr<jahr_heute){
guetlig=false;
alert("Ihre Karte ist abgelaufen");
return false;}

if(jahr>jahr_heute){
gueltig=true;
}

if(jahr=jahr_heute){
if(monat>=monat_heute){
gueltig=true}

else{gueltig=false;
alert("Ihre Karte ist abgelaufen.");
return false;}}

if (nummer_ok){
alert("Ihr Name ist" +karteninhaber+" und sie zahlen mit einer "+kartenart+" mit der Nummer: "
+num1+num2+num4".");
}
else{
alert("Dies ist keine korrekten Nummer für diesen Kartentyp");
return false;
}}

</script>
</head>
 <body>

<form name="karte" method="post" onSubmit="return Formular()">

<h2>Bitte wählen Sie hier Ihre Kreditkarte aus: </h2>

<input type="radio" name="art" value="a">American Express
  <input type="radio" name="art" value="m">Mastercard
   <input type="radio" name="art" value="v">Visa

<br>

<h2>Bitte geben Sie hier die Nummer ein</h2>

<input type="text" size="4" name="nummer1" >
  <input type="text" size="4" name="nummer2" >
  <input type="text" size="4" name="nummer3" >
 <input type="text" size="4" name="nummer4" >

<select size="1" name="jahr">
 <option vlaue="2008">2008</option>
  <option vlaue="2009">2009</option>
   <option vlaue="2010">2010</option>
 <option vlaue="2011">2011</option>
 <option vlaue="2012">2013</option>
 <option vlaue="2013">2013</option>
 <option vlaue="2014">2014</option>
 </select>

<h2>Bitte geben Sie hier Ihren Namen ein</h2>
 <input type="text" size"40" name="inhaber">
<input type="submit" value="Abschicken">
<input type="reset" value="l&ouml;schen">
 </form>
 </body>
</html>

  1. Tipp 1:
    Achte auf richtige Schreibweisen (vaule statt value, guetlich statt gueltig, = statt == in Vergleichen)

    Tipp 2:
    Öffne deine Seite im Firefox und schau im Menü Extras in die Fehlerkonsole.

  2. Kann mir jmd. sagen, wo das Problem liegt??

    Nicht direkt aber:

    monat_ende=document.karte.monat.value;
    jahr_ende=document.karte.jahr.value;

    Kann es sein, dass es die Objekte gar nicht gibt in deinem Quelltext ?!?!?

    --
    Wo die Sprache aufhört, fängt die Musik an...