IE und for-in Schleife mit Cheackboxen/Radiobuttons...

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von koli.bri, 03.04.2007.

  1. koli.bri

    koli.bri Thread Starter Gast

    IE und for-in Schleife mit Checkboxen/Radiobuttons...

    Hallo.

    es eilt ein wenig, daher nur kurz:

    Der HTML-Anguck-Müll aus dem Hause Microsoft verhält sich mir gegenüber vollkommen unangemessen unverständlich. Das der nicht laut lacht ist auch schon alles :koch:

    Aber gut, der Fehler liegt ja meist vor dem Bildschirm, nicht da drunter...

    Also, hier mein Script:
    JavaScript:
    PHP:
      function cpy(arg){
        return 
    arg;
      }


      function 
    check_antwort2(frage){
          var 
    fehler 0;
      
    //    alert(document.forms[frage].elements["a" + frage][1].type);

        
    tmparr cpy(document.forms[frage].elements["a" frage]);
      
    //  alert(tmparr[0].type);
        
    for(var key in tmparr){
        
    // alert(key + "#" + tmparr[key]);
          
    if("checkbox" == tmparr[key].type){
          
    //   alert("hie");
           
    if(
              (
    true == tmparr[key].checked
              
    && == tmparr[key].value)
            ||
             (
    false == tmparr[key].checked
              
    && == tmparr[key].value)
           ){
            
    // Antwort ist richtig

          
    }else{
            
    // Antwort ist falsch
            
    fehler++;
          }
         }
        }
        if(
    == fehler){
        
    // Alle Antworten richtig
          
    document.getElementById("t" frage).innerHTML "Alles Richtig";
        }else{
        
    // Mindestens eine Falsche Antwort
          
    document.getElementById("t" frage).innerHTML "es sind noch " fehler " Falsche Antworten da";
        }
        return 
    false;
      }
    HTML-Snippet
    HTML:
      <a name="lfrage1">&nbsp;</a>
      <form action="#frage1" name="frage1" onSubmit="return check_antwort2(this.name)">
      <p>Hier eine Frage -.-<br>
        <input type="checkbox" name="afrage1" value="0"> Antw.0(falsch) <br>
        <input type="checkbox" name="afrage1" value="1"> Antw.1(richtig) <br>
        <input type="checkbox" name="afrage1" value="1"> Antw.2(Richtig) <br>
        <input type="checkbox" name="afrage1" value="0"> Antw.3(falsch) <br>
        <input type="submit" value="Absenden"><br></p>
        <p id="tfrage1"></p>
    
      </form>

    Ziel ist eine Simple Überprüfung, ob die Frage richtig beantwortet worden ist. Ganz simpel.

    In den Values der Checkboxen ist vermerkt, ob die Antwort richtig(1)/falsch(0) ist.

    Die Idee ist, dass der in einer Schleife jedes Checkbox-Element durchläuft, guckt, ob es makiert ist, und anhand der Value dann guck, ob das markiert/nicht markiert richtig ist.
    Wenn nicht, wird eine Fehler-Variable erhöht und danach die Anzahl der Fehler ausgegeben.

    Im Grunde ganz einfach, der FireFox kommt auch super damit klar...

    Nur der Internet Explorer weigert sich irgendwie, in die Abfrage nach dem Typ zu gehen (die Notwendig ist, sonst nimmt der die Eigenschaft length auch noch mit in die Verarbeitung -> Ein Fehlerpunkt, der nicht sein soll)


    Also, wo liegt der Fehler?

    lieben Gruß
    Lukas
     
    Zuletzt von einem Moderator bearbeitet: 03.04.2007
  2. CharlesT

    CharlesT unregistriert

    Beiträge:
    3.955
    Zustimmungen:
    40
    MacUser seit:
    07.05.2002
    && 1 == tmparr[key].value ??

    muss es nicht

    && tmparr[key].value == 1

    heißen?
     
  3. koli.bri

    koli.bri Thread Starter Gast

    Was auf welcher Seite steht ist im Grunde egal. Es wird ja nichts zugewiesen, sondern verglichen.

    Das der "Feste" Wert Links steht, hab ich mir angewöhnt, damit der, sollte ich mal ein "=" vergessen, der Abbricht, und den Befehl nicht als Zuweisung interpretiert :)


    Was ich aber herausgefunden habe:

    Der IE scheint einfach nur das falsche Array zu durchlaufen.
    Auf jeden Fall sind die Schlüssel des Arrays, was mit der For-In-Schleife durchgelaufen wird, NICHT die Nummern, sondern die name's der Checkboxen.


    Anders forumuliert:
    "Normal" ist es ja, dass Checkboxengruppen in JavaScript in ein Array "gewandelt" werden. Sprich, mehrere Elemente mit dem selben name-Atribut werden mit JavaScript so angesprochen:
    PHP:
    document.forms['formname'].elements['chkboxgruppenname'][lfnd.nummer]
    Aber der IE macht da irgendwie was anderes draus...

    Ich verzeifle langsam, nicht mal auf SELFHTML wird auf sowas hingewiesen...
    Dabei sollte das heute noch fertig werden!!!

    gruß
    Lukas
     
  4. CharlesT

    CharlesT unregistriert

    Beiträge:
    3.955
    Zustimmungen:
    40
    MacUser seit:
    07.05.2002
    Dann weiß ich es momentan auch nicht... :(
     
  5. koli.bri

    koli.bri Thread Starter Gast

    Richtig Merkwürdig:

    Auch wenn ich mir die Checkboxen mit document.getElementyByName("a" + frage) hole, bekomme ich die name's der Checkboxen als Schlüssel zurück...

    Was macht der IE da? Und warum blick ich nicht da durch?

    gruß
    Lukas
     
  6. koli.bri

    koli.bri Thread Starter Gast

Die Seite wird geladen...

Diese Seite empfehlen