Javascript funktioniert nicht unter Mozilla, Netscape und Opera

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

  • Javascript funktioniert nicht unter Mozilla, Netscape und Opera

    Habe ein Formular, dass über Javascript Arrays eingegebene Daten des Users speichert und ausgibt. Es funktioniert soweit schon ganz gut mit dem IE, habe aber in Mozilla, Opera und Netscape das Problem, dass es dort nicht läuft. Ich habe dann mal die Fehlerkonsole des Mozillas benutzt und konnte folgendes herausfinden:

    Die Fehlerkonsole vom Mozilla gibt mir folgende Fehlermeldungen aus:

    "o has no properties"
    Code:
    Das ganze scheint aus dieser Zeile zu kommen:
    function toggle_obj(o,d)
    {
      o.style.display=d;
    }


    nach drücken des Buttons add erscheint folgende Fehlermeldung in der Fehlerkonsole:

    "li[1] has no properties"
    Code:
    Das ganze scheint aus dieser Zeile zu kommen:
    li[1].getElementsByTagName('STRONG')[0].innerHTML='Enter Squadname';
    Kann mir jemand mit diesem Problem weiter helfen? Wäre euch sehr dankbar.
    Ich hoffe der Code schnipsel reicht, sonst kann ich euch auch gerne nochmal den Rest einstellen.

  • #2
    Sind o und li[1] überhaupt Objekte? Was für welche?

    Kommentar


    • #3
      wo wird toggle_obj() aufgerufen? was wird dieser funktion übergeben?

      Kommentar


      • #4
        Hallo ja o sollte eigentlich eins sein! poste hier nochmal den ganzen quellcode. hoffe ihr kommt mit zurecht.

        Code:
        <script type="text/javascript">
        <!--
        
        var arrSquads=[],frm,li;
        
        String.prototype.trim=function(dir)
        {
          switch(dir)
            {
              case 'r':
                return this.replace(/\s+$/g,'');
                  break;
              case 'l':
                return this.replace(/^\s+/g,'');
                  break;
              default:
                return this.replace(/(^\s+|\s+$)/g,'');
            }
        }
        
        function in_array(a,v)
        {
          for(var k in a)
            {
              if(a[k]==v)return true;
            }
          return false;
        }
        
        
        
        
        function toggle_obj(o,d)
        {
          o.style.display=d;
        }
        
        function init_squads(sn)
        {
          
          frm=document.Formular;
          li=frm.getElementsByTagName('LI');
          toggle_obj(li[3],'none');
          init=false;
          frm.listSquads.options.length=0;
          for(var k in arrSquads)
            {
              c=(init_squads.arguments.length==1 && sn==k)?true:false;
              frm.listSquads.options[frm.listSquads.options.length]=new Option(k,k,c,c);
              init=true;
              
            }
          if(!init)
            {
              frm.listSquads.options[0]=new Option('no Squads yet',0);
              toggle_obj(li[2].getElementsByTagName('span')[0],'none');
              list_members();
            }
          else
            {
              squad_options();
            }
        }
        
        function squad_options()
        {
          if(frm.listSquads.value!=0)
            {
              
              toggle_obj(li[2].getElementsByTagName('span')[0],'inline');
              frm.delSquad.value='delete "'+frm.listSquads.value+'"';
              frm.edtSquad.value='new member';
              list_members(frm.listSquads.value);
            }
          
              
            
        }
        
        function list_members(s)
        {
          m='';
          if(list_members.arguments.length>0 && arrSquads[s].length>0)
            {
              m='<strong>Members of <i>'+s+'</i></strong><ul>';
              for(i=0;i<arrSquads[s].length;++i)
                {
                  m+='<li><b onclick="delete_member('+i+')" style="cursor:pointer">[DEL]</b> '+arrSquads[s][i]+'</li>';
                }
              m+='</ul>';
              toggle_obj(li[4],'block');
            }
          else
            {
              toggle_obj(li[4],'none');
            }
          li[4].innerHTML=m;
        }
        
        function add_member(e)
        {
          if(!e)
            {
              li[3].getElementsByTagName('STRONG')[0].innerHTML='Squad Member';
              toggle_obj(li[3],'block');
              frm.addBtn.value='add Member'
              frm.addBtn.onclick=function(){add_member(1);}
              
            }
          else
            {
              e='';
              v=String(frm.add.value).trim();
              frm.add.value='';
              if(v=='')
                {
                  e='Enter Member-Name!';
                }
              
              else if(in_array(arrSquads[frm.listSquads.value],v))
                {
                  e='This Member already exists';
                }
              if(e)
                {
                  alert(e);
                  frm.add.focus();
                  return;
                }
              
              arrSquads[frm.listSquads.value].push(v);
              init_squads(frm.listSquads.value);
              toggle_obj(li[3],'none');
              
            }
        }
        
        
        function add_squad(e)
        {
          
          if(!e)
            {
              li[3].getElementsByTagName('STRONG')[0].innerHTML='Enter Squadname';
              toggle_obj(li[3],'block');
              frm.addBtn.value='add Squad'
              frm.addBtn.onclick=function(){add_squad(1);}
              
            }
          else
            {
              e='';
              v=String(frm.add.value).trim();
              frm.add.value='';
              if(v=='')
                {
                  e='Enter Squadname!';
                }
              else if(typeof arrSquads[v]!='undefined')
                {
                  e='This Squad already exists';
                }
              if(e)
                {
                  alert(e);
                  frm.add.focus();
                  return;
                }
              
              arrSquads[v]=[];
              init_squads(v);
              toggle_obj(li[3],'none');
              
            }
        }
        
        function delete_squad()
        {
          if(confirm('Delete Squad "'+ frm.listSquads.value +'" ?'))
            {
              delete(arrSquads[frm.listSquads.value]);
              init_squads();
            }
        }
        
        function delete_member(m)
        {
          if(confirm('Delete Member "'+ arrSquads[frm.listSquads.value][m] +'" ?'))
            {
              arrSquads[frm.listSquads.value].splice(m,1)
              init_squads();
            }
        }
        
        
        
        window.onload=init_squads;
        //-->
        </script>
        
        
        
        Hier der aufruf der funktionen:
        
        <li><strong>Clansquads:</strong><br>
            <select size="2" width="200" size="2" overflow="auto" name="listSquads" class="submit2" onclick="squad_options();"></select><br>
            <input type="button" value="new Squad" onclick="add_squad(0)" class="buttonsubmit1">
            <span class="hide">      
              <input type="button" name="edtSquad" value="add Member" onclick="add_member(0)" class="buttonsubmit1">&nbsp;
              <input type="button" width="160" height="19" overflow="hidden"
        style="width:160px; height:19px; overflow:hidden;" name="delSquad" 
        value="delete" onclick="delete_squad()" class="buttonsubmit1">&nbsp;
            </span>
          </li>
          <li class="hide">
            <strong></strong><br />
            <input type="text" size="20" name="add" class="submit1">
            <input type="button" value="add" name="addBtn" class="buttonsubmit1">
          </li>
          <li class="hide"></li>


        Vielen dank schonmal bis hier her!

        Kommentar


        • #5
          Nee tut mir leid. Ich lese nicht den ganzen Code und serviere dir dann die Lösung auf dem Silbertablett.

          Überprüfe bitte selbst, was da los ist. alert und typeof helfen dir dabei.

          Kommentar


          • #6
            habe ich ja versucht, bekomme aber nichts heraus! ich dachte es liegt mal wieder nur einer blöden Kleinigkeit.


            die fehlekonsole gibt mir ja aus, dass 2 Stellen Fehlerhaft sind. Von wegen o has no properties und li[1] has no properties.

            bin noch ziehmlicher anfänger, deshalb benötige ich eure hilfe.

            Kommentar


            • #7
              Das deutet darauf hin, dass beide eben keine Objekte sind. Denn nur Objekte haben Properties.

              Füge vor die fehlerhaften Zeilen Kontrollausgaben ein, z.B. alert(typeof o).

              Deine Funktion toggle_obj() ist in Prototype schon eingebaut: http://www.prototypejs.org/api/element#method-toggle

              Kommentar


              • #8
                danke für dein tip, es läuft jetzt!

                Kommentar

                Lädt...
                X