Announcement

Collapse
No announcement yet.

Javascript Problem im Internet Explorer

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Javascript Problem im Internet Explorer

    Hallo zusammen,

    mit diesem Beitrag hab ich dann wohl mein Jubiläum oder auch meine Entjungferung in diesem Forum.
    Nun auch schon zu meinem Problem. Ich habe eine Form, nur mit Checkboxen ungefähr mit folgendem Aufbau:
    - Hauptkategorie (Name = 10, ID = 20)
    ------ Unterkategorie (Name = 20, ID = 21)
    ----------- Unter-Unterkategorie (Name = 21, ID = 22)
    ----------- Unter-Unterkategorie (Name = 21, ID = 23)
    ----------- Unter-Unterkategorie (Name = 21, ID = 24)
    ----------- Unter-Unterkategorie (Name = 21, ID = 25)
    ------ Unterkategorie (Name = 20, ID = 26)
    ----------- Unter-Unterkategorie (Name = 26, ID = 27)
    ----------- Unter-Unterkategorie (Name = 26, ID = 28)
    ----------- Unter-Unterkategorie (Name = 26, ID = 29)


    Jeder einzelne Punkt ist auswählbar, wird ein Punkt mit Unterpunkten ausgewählt, werden auch alle Unterpunkte automatisch ausgewählt. Beim Auswählen wird die Funktion "checkPages" mit der aktuellen ID als Parameter aufgerufen.
    Wegen dem darauffolgenden Prozedere werden (wie im Code ersichtlich) HTML Elemente erzeugt und wieder gelöscht - macht euch einfach keine Gedanken darüber...

    Im Firefox funktioniert es genauso und im Internet Explorer leider nicht... Da kommt die Fehlermeldung "Out of Memory".

    Hier mein Code:
    Code:
    function checkPages(checkId)
    {
      var field = document.getElementById(checkId);
      counter = 0;  
      if(field.checked == true)
        checkAllPages(checkId); 
      else
        uncheckAllPages(checkId); 
    }
    
    
    function uncheckAllPages(checkId)
    {
      var fields = document.getElementsByName(checkId); 
      if(fields.length > 0)
      {
        for(var i = 0; i <= fields.length; i++)
          if(fields[i] != undefined)
          {
            fields[i].checked = false;
            
            var id = fields[i].getAttribute('id') + '-hidden'; 
            removeElement(id); 
            
            uncheckAllPages(fields[i].getAttribute('id')); 
          }
      }
      else
        removeElement(checkId + '-hidden');  
    }
    
    function checkAllPages(checkId)
    {  
      var fields = "";
      fields = document.getElementsByName(checkId);   
      if(fields.length > 0)
      {  
        for(var i = 0; i <= fields.length; i++)
          if(fields[i] != undefined)
          { 
            fields[i].checked = true;
            
            var newInput = document.createElement('input');
            newInput.type = 'hidden';
            newInput.id = fields[i].getAttribute('id')+'-hidden';
            newInput.name = 'uid[]';
            newInput.value = fields[i].getAttribute('id');   
            fields[i].parentNode.insertBefore(newInput, fields[i]);
            
            checkAllPages(fields[i].getAttribute('id'));
          }    
      }
      else
      {  
          document.getElementById(checkId).checked = true; 
          var newInput = document.createElement('input');
          newInput.type = 'hidden';  
          newInput.id = checkId + '-hidden'; 
          newInput.name = 'uid[]'; 
          newInput.value = checkId; 
          document.getElementById(checkId).parentNode.insertBefore(newInput, document.getElementById(checkId)); 
      }
    }
    
    function removeElement(id) {
      var element = document.getElementById(id);
      element.parentNode.removeChild(element);
    }
    Ich hoffe jemand kann mir helfen... Ich bin kurz vorm Verzweifeln, da ich auch noch totaler Anfänger in JS bin...

    Gruß,
    Seitz

  • #2
    Hallo,
    Originally posted by seitz View Post
    ...Im Firefox funktioniert es genauso und im Internet Explorer leider nicht... Da kommt die Fehlermeldung "Out of Memory".
    offensichtlich hast du dir da eine Endlosrekursion programmiert. Lass dir doch mal anzeigen, mit welchen Paramtern die Funktion jeweils aufgerufen wird.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment

    Working...
    X