[JavaScript] Checkboxen enable / disable

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Original geschrieben von Boron
    Wo steckt der Fehler?
    in mangelnden HTML-kenntnissen.
    http://de.selfhtml.org/html/attribut...htm#uebersicht
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #17
      Original geschrieben von Boron

      Wo steckt der Fehler?
      wofür steht id? wenn du dahinter steigst, was id für Eigenschaften besitzt, dann sollte alles klar sein.

      Kommentar


      • #18
        keinen id-Namen innerhalb einer HTML-Datei mehr als einmal vergeben
        OK, deshalb nenne ich meine Checkboxen jetzt:

        Code:
        <input type="checkbox" id="CheckboxUnitsBurg'.$data['BurgID'].'Unit'.$Id.'" 
        name="einheiten['.$data['BurgID'].'][]" value="'.$Id.'" disabled>
        und meine JS-Funktion testweise:

        Code:
        function EnableCheckboxUnits() {
        
        document.getElementByID("CheckboxUnitsBurg14Unit1").disabled == false;
         
        }
        (Weil ich weiß, dass
        [FONT=courier new]CheckboxUnitsBurg14Unit1[/FONT] generiert wird. --> steht im Quelltext auch drinne).

        Keine ID kommt jetzt zweimal vor.

        Der IE bringt mir aber den Fehler:

        Das Objekt unterstützt diese Eigenschaft oder Methode nicht.
        Zuletzt geändert von asp2php; 23.02.2005, 15:40.

        Kommentar


        • #19
          der unterschied zwischen dem zuweisungsoperator und dem vergleichsoperator ist dir bekannt?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #20
            Welchem Vergleichsoperator?

            Code:
            document.getElementByID("CheckboxUnitsBurg14Unit1").disabled=false;
            Tut auch nicht.

            Kommentar


            • #21
              ich sage nur: JS ist case-sensitive

              Kommentar


              • #22
                Richtig. Schlecht, dass das erst jetzt aufgefallen ist....

                Hier nun der richtige Code:

                Code:
                function ChangeCheckboxUnits(id) {
                
                for(var i=0;i<15;i++) {
                
                  var units = id + String(i);
                  
                	if(document.getElementById(units).disabled == true) {
                	  document.getElementById(units).disabled = false;
                   }
                  
                	else {
                	  document.getElementById(units).disabled = true;
                   }   
                	 
                 } 
                
                }
                
                [...]
                
                <input type="checkbox" name="angreifen[]" value="<? echo $data['BurgID']; ?>" 
                onclick="ChangeCheckboxUnits('<?php echo 'CheckboxUnitsBurg'.$data['BurgID'].'Unit'; ?>')">
                
                <?
                foreach( $CombatUnits as $Id => $Unit )
                {
                echo '<input type="checkbox" id="CheckboxUnitsBurg'.$data['BurgID'].'Unit'.$Id.'"  
                name="einheiten['.$data['BurgID'].'][]" value="'.$Id.'" disabled>' . "\n";
                }
                ?>
                Geht aber nur, weil max. 14 Checkboxen (bei den Einheiten) generiert werden (deshalb i<15).
                Zuletzt geändert von Boron; 23.02.2005, 17:51.

                Kommentar


                • #23
                  Hallo!

                  Ich krame diesen Thread nochmal aus, weil ich ein Problem habe, was sich dem in etwa anschließt.



                  Ich habe folgenden Code:

                  PHP-Code:
                  <input type="checkbox" name="angreifen[]" value="<? echo $data['BurgID']; ?>" 
                  onclick="ChangeCheckboxUnits('<? echo $data['BurgID']; ?>')">


                  <? 
                  foreach( $CombatUnits as $Id => $Unit )     // --> das sind 15 IDs 
                  {
                  ?>
                    <input type="checkbox" id="<? echo "CheckboxUnitsBurg".$data['BurgID']."Unit".$Id; ?>"  
                    name="einheiten[<? echo $data['BurgID']; ?>][]" value="<? echo $Id; ?>" disabled>

                  <?
                  } // foreach ende
                  ?>
                  Der JavaScript-Code sieht so aus:
                  Code:
                  function ChangeCheckboxUnits(BurgID) {
                  
                  // Einheitencheckboxen freigeben, nachdem "angreifen"-Checkbox geklickt wurde
                  for(var i=0;i<15;i++) {
                  
                    var units = "CheckboxUnitsBurg"+BurgID+"Unit"+i;
                    var CheckboxenUnits = document.getElementById(units);
                    
                  	if(document.att.angreifen[BurgID].checked == true) {
                  	
                  		  CheckboxenUnits.disabled = false; 
                       }
                  	 
                   } 
                  
                  
                  } // funktion ENDE
                  Es sollen also die Einheiten- Checkboxen freigegeben (disabled = false) werden, wenn man auf die Angreifen-Checkbox geklickt hat.

                  Doch leider funktioniert es nicht.
                  Der Fehler muss hier drinne stecken:

                  Code:
                  if(document.att.angreifen[BurgID].checked == true) {
                  	
                  		  CheckboxenUnits.disabled = false; 
                       }
                  Ohne die IF-Abfrage, funktioniert es nämlich. Ich weiß aber nicht, was an der falsch ist .

                  (Das Formular trägt den Namen "att".)

                  Kann mir da jemand helfen und sagen, wie es richtig heißen muss, damit die Checkboxen anklickbar sind?

                  Kommentar


                  • #24
                    bitte poste nicht irgendwelchen PHP-code, wenn du ein clientseitiges problem diskutieren willst - sondern den HTML-code, wie er beim client ankommt.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #25
                      Ok.

                      Habs jetzt hinbekommen, in dem ich den angreifen-Checkboxen auch eine ID (id="angreifen<? echo $data["BurgID"]; ?>") verpasst habe.

                      Code:
                      function ChangeCheckboxUnits(BurgID) {
                      
                      var CheckboxAngreifenIdName = "angreifen"+BurgID;
                      var CheckboxAngreifen = document.getElementById(CheckboxAngreifenIdName);
                      
                      // Einheitencheckboxen freigeben, nachdem "angreifen"-Checkbox geklickt wurde
                      for(var i=0;i<15;i++) {
                      
                        var units = "CheckboxUnitsBurg"+BurgID+"Unit"+i;
                        var CheckboxenUnits = document.getElementById(units);
                        
                      
                      	if(CheckboxAngreifen.checked==true) {
                      		  CheckboxenUnits.disabled=false; 
                                }
                      	else { 
                      	   CheckboxenUnits.checked=false;
                      	   CheckboxenUnits.disabled=true; 
                      	  }	  
                        }
                      } // funktion ENDE

                      Kommentar

                      Lädt...
                      X