Ergebnis 1 bis 6 von 6

Thema: JavaScript: select-box onchange: neue select-box

  1. #1
    Azubi(ne)
    Registriert seit
    20.06.2008
    Ort
    Paderborn
    Beiträge
    81
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard JavaScript: select-box onchange: neue select-box

    Hab ein JavaScript-Problem und bin da noch ziemlicher Newb, vielleicht ist es nur ein kleiner Fehler den ein versierter JavaScripter direkt sieht.

    Ich habe eine Select-Box zur Auswahl von Kategorien, bei einer Auswahl soll daneben eine zweite Select-Box mit den zugehörigen Unterkategorien erscheinen (und zu dieser bei Auswahl gegebenenfalls nochmals eine). Das klappt leider nicht, beim Auswählen einer Kategorie passiert gar nichts

    Dafür lese ich zunächst alle Kategorien aus der Datenbank aus und füttere sie in einen mehrdimensionalen JavaScript-Array (dieser wird auch korrekt gefüllt):
    Code:
    <?php
    $sql = "SELECT id,kategorie,parentid FROM branche";
    $result = mysql_query($sql);
    $count = mysql_num_rows($result);
    $i = 0;
    while($row = mysql_fetch_array($result))
    {  $branchen[$i]= $row;  $i++;  }
    echo "var arrParts[] = new array();";
    for($i=0;$i<$count;$i++)
    {
        if(!$branchen[$i]['parentid'])
        {
            $sub = 0;
            echo "var arrParts[".$branchen[$i]['id']."] = new array();";
            for($j=0;$j<$count;$j++)
            {
                if($branchen[$i]['id']==$branchen[$j]['parentid'])
                {    
                    $sub++;
                    echo "var arrParts[".$branchen[$i]['id']."][".$sub."] = new array();";
                    echo "arrParts[".$branchen[$i]['id']."][".$sub."][\"text\"]='".$branchen[$j]['kategorie']."';";
                    echo "arrParts[".$branchen[$i]['id']."][".$sub."][\"value\"]='".$branchen[$j]['id']."';";
                    $sub1 = 0;
                    for($k=0;$k<$count;$k++)
                    {
                        if($branchen[$j]['id']==$branchen[$k]['parentid'])
                        {    
                            $sub1++;
                            echo "var arrParts[".$branchen[$j]['id']."][".$sub."] = new array();";
                            echo "arrParts[".$branchen[$j]['id']."][\"sub\"]=1;";
                            echo "arrParts[".$branchen[$j]['id']."][".$sub1."][\"text\"]='".$branchen[$k]['kategorie']."';";
                            echo "arrParts[".$branchen[$j]['id']."][".$sub1."][\"value\"]='".$branchen[$k]['id']."';";
                        }
                    }
                }
            }
        }
    }
    ?>
    Die JavaScript-Funktion die das ganze bewerkstelligen soll:
    Code:
    var AuswahlU;
    var ausgewaehlteins;
    var ausgewaehltzwei;
    var objsel;
    function ersteAuswahl(objSel)
    {
        document.myform.weiter.disabled = true;
        document.getElementById('Unterkategorieeins').style.display='none';
        document.getElementById('selPartseins').style.display='none';
        AuswahlU =false;
        // Objekt fuer zweite Select-Gruppe
        objSelNew = document.getElementById('selPartseins');
        // Optionen loeschen
        objSelNew.length = 0;
        objSelNew.style.display = 'inline';
        for(i=1; i<arrParts[objSel.value].length; i++)
        {
            // Neue Option erstellen
            objOpt = new Option(arrParts[objSel.value][i]["text"],arrParts[objSel.value][i]["value"]);
            objSelNew.options[objSelNew.length] = objOpt;
            ausgewaehlteins=objSel.value;
        }
    }
    Und der zugehörige HTML-Bereich:
    Code:
      <select name='Kategorie_eins' id='Parts' onChange='ersteAuswahl(this);'>
      <option value='0'>Bitte wählen</option>
      <?php
      $sql = "SELECT id,kategorie FROM branche WHERE parentid IS NULL";
      $result = mysql_query($sql);
      $options = "";
      while($row = mysql_fetch_array($result))
      { $options.= "<option value='".$row['id']."'>".$row['kategorie']."</option>"; }
      echo $options;
      ?>
      </select>
      <select id='selPartseins' style='display:none;' name='Unterkategorie_eins' onChange='UnterkategorieAuswahleins(this);'>
      </select>
      <select id='Unterkategorieeins' style='display:none;' name='Unterunterkategorie_eins' onChange='UUAuswahleins(this);'>
      </select>
    Sieht vllt. jemand einen Fehler in dem Konstrukt, bzw. ist das in dieser form überhaupt vernünftig umgesetzt (der javascript-teil)?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Jedi Ritter Avatar von Dodo
    Registriert seit
    26.04.2008
    Ort
    Wien
    Alter
    27
    Beiträge
    3.774
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    hast du in der Firfox-Fehler-Konsole nachgesehen, ob du eine meldung bekommst?
    (Extras -> Fehler-Konsole)
    Something big is coming. And there will be pirates and ninjas and unicorns...

  3. #3
    Azubi(ne)
    Themenstarter

    Registriert seit
    20.06.2008
    Ort
    Paderborn
    Beiträge
    81
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    drei meldungen die mir irgendwie nicht einleuchten wollen:
    ersteAuswahl is not defined
    Ich bin, wie schon gesagt, kein großer javascript checker, aber was muß ich denn da noch mehr definieren? -.-;;
    missing ; before statement

    var arrParts = new array();var arrParts[1] = new array();var arrParts[1][1] = new array();

    --------------------------------------^
    Auch hier kann ich nicht erkennen wo da ein ; fehlen soll
    uncaught exception: Die Erlaubnis für den Aufruf der Methode Location.toString wurde verweigert // edit: dieser fehler hat sich erledigt, lag an einer kleinen änderung im code zu testzwecken
    Location.toString gibt es überhaupt nicht im quellcode -.-
    Geändert von Jan_K (20.08.2008 um 11:29 Uhr)

  4. #4
    Azubi(ne)
    Themenstarter

    Registriert seit
    20.06.2008
    Ort
    Paderborn
    Beiträge
    81
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ahhhhh
    ich hasse javascript...

    et funzt nu.

    Und zwar gab es zwei kleine probleme:

    1.
    var arrParts = new array();
    var arrParts[1] = new array();
    var arrParts[1][1] = new array();
    ...

    das "var" durfte nur vor dem reinen arrParts stehen, bei den tieferen Dimensionen ist das unerwünscht, also so:

    var arrParts = new array();
    arrParts[1] = new array();
    arrParts[1][1] = new array();
    ...


    Da spuckte er mir dann schonmal nur noch die Fehlermeldung: "array is not defined"

    womit ich dann zum zweiten Fehler kam:

    2.
    Nicht-Beachtung von case-sensitivity meinerseits.
    mit "new Array()" war auch dieser Fehler behoben.

    Und siehe da, nun ist auch "ersteAuswahl" nicht mehr undefined und es läuft alles wie es soll.
    Auswahl in der select-box öffnet die zweite select-box mit den zugehörigen unterkategorien.

    Jetzt wird nur noch arrParts nicht ganz korrekt belegt, das sollte aber kein großes Problem mehr sein

  5. #5
    Jedi Ritter Avatar von Dodo
    Registriert seit
    26.04.2008
    Ort
    Wien
    Alter
    27
    Beiträge
    3.774
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    jop das is das problem an JS^^ (also meines)
    man bekommt keine offenen fehlermeldungen wenn was nicht passt, sondern sieht nur, dass nix passiert.

    Darum -> Fehlerkonsole
    Something big is coming. And there will be pirates and ninjas and unicorns...

  6. #6
    Azubi(ne)
    Themenstarter

    Registriert seit
    20.06.2008
    Ort
    Paderborn
    Beiträge
    81
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    hehe, yo richtig

    die meldungen von der fehlerkonsole fand ich aber auch recht unkonkret. "missing ; before statement" <-- da seh ich keinen direkten zusammenhang zur doppelten var-deklaration von arrParts. (mag aber auch einfach an mangelnder routine im umgang mit js liegen)

    Da gefällt mir php wesentlich besser, mit den fehlermeldungen kann ich i.d.r. mehr anfangen.

Ähnliche Themen

  1. <select onChange="..."> bei onload
    Von Zentral im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 16
    Letzter Beitrag: 16.07.2008, 20:14
  2. problem mit Pulldown-Menü (<select></select>)
    Von magicgerd im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 23.01.2006, 18:38
  3. select
    Von HTML Looser im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 04.08.2005, 17:09
  4. ein <select> mit JavaScript auslesen? wie??
    Von Macintosch im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 25.06.2004, 11:45
  5. select
    Von icke im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 11.05.2004, 15:52

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •