Jeena Paradies: Problem mit dynamischem Formular (onchange() und select

Beitrag lesen

Hallo,

<select onchange="checksun('value')">

  
Dieses `checksun('value')`{:.language-javascript} übergibt den String "value" an die funktion `checksun()`{:.language-javascript}. Was du machen willst ist wohl eher `checksun(this.options[this.selectedIndex].value)`{:.language-javascript}. Das würde den String der in value des option das gerade selected ist an die funktion übergeben.  
  

> ~~~javascript

	function checksun(checker){  

> 		var day = checker.getday();  
  
Hier ist mir nicht klar was du da machen willst. Der String in der Variable checker hat sicherlich keine Methode namens getday(). Interessant wäre wie deine Strings in value bei den <option>-tags aussehen. Wenn es ein Datum im Format yyyy-mm-dd ist, also 2012-05-12 dann könntest du den Tag so herausbekommen:  
  
[code lang=javascript]function checksun(value) {  
    var date = new Date(value);  
    var weekDay = date.getDay();  
    var startIndex = weekDay == 0 ? 1 : 0; // hier ist der Großbustabe "D" wichtig.  
    var times = ["10:00", "12:00", "14:00", "16:00", "18:00", "20:00"]; // denn es gibt kein objekt mit dem namen "array" nur mit "Array" aber mit Objekt-Literal-Schreibweise ist es eh einfacher lesbar.  
    var select = document.getElementById("zeiten"); // den Pointer speichern wir in einer Variable damit der browser ihn nicht die ganze Zeit im DOM suchen muss.  
  
    for (var i = start; i <= times.length; i++) { // hier den richtigen Variablennamen times nicht "zeiten" benutzen und ein var vor das "i" setzen sonst wird das i eine globale Variable was man unbedingt vermeiden sollte.  
        var option = document.createElement("option"); // Wir machen ein neues option element und hängen das dann ins DOM, denn das element mit der ID "zeiten" hat keine Methode namens write().  
        option.innerText = times[i];  
        option.value = times[i];  
        select.appendChild(option); // Hier fügen wir das Objekt hinzu mit hilfe der normalen DOM methode [ref:self812;javascript/objekte/node.htm#append_child@title=appendChild()]  
    }  
}

Der code ist komplett ungetestet weil ich ihn hier nur aus dem Kopf geschrieben habe, aber mit den Kommentaren solltest du schon weiter kommen.

Jeena