JS Combobox

Spacedoener

Gesperrt
Hi,

habe einen ernsthaften problem und hoffe ihr könnt mir dabei Helfen...

Wie kann ich diesen Fehlermeldung denn mit "if-schleife" abfangen ?


Fehlermeldung:
Es ist ein Laufzeitfehler aufgetreten.
Soll der Debugmodus gestartet werden?

Zeile: 203
Fehler: "document.forms.artikel.combo_kat.selectedIndex' ist Null oder kein Objekt


Würde mich echt sehr freuen, wenn ihr mir dabei Helfen könnt, bin für jede kleine Hilfe sehr dankbar...

MfG
Spacedoener
 
Etwas mehr vom Qelltext wäre jetzt sehr hilfreich, weil sonst können wir nicht helfen.

Und so TOP SECREt wird dein Code ja nicht sein!
 
Falls mir meine Kristallkugel richtig vermeldet hat, dass "artikel" der Name des Formulars ist, und "combo_kat " Name des <select>'s innerhalb des Formulars, sollte die Zeile heissen:
Code:
document.artikel.combo_kat.selectedIndex
oder
Code:
document.forms['artikel'].combo_kat.selectedIndex
 
Hi,

dankeschön für eure rasche Antwort aber mein problem ist in PHP Script und da werden zwei Comboboxen so aufgebaut:

1. Combobox (2. sieht genauso aus)
PHP:
<?php
    $form = "artikel";

    if(mysql_num_rows($ergebnis_kat) >0)
    {
        echo "<select class='button' name='combo_Kat' size='1' onChange='combo(\"".$form."\")'>".
        "<option value = '-1'>Wählen Sie einen Kategorie aus:</option>";
        for($i=0; $i<mysql_num_rows($ergebnis_kat); $i++)
        {
            $id_kat = mysql_result($ergebnis_kat, $i, 'Katid');
            $uname_kat = mysql_result($ergebnis_kat, $i, 'Kategoriename');
            $string1_kat = strlen($id_kat);

            echo "<option value = '".$id_kat;

            echo "'>ID: ";
            echo $uname_kat."</option>";
        }
        echo "</select>";
    }
    else
    {
        echo "<font size='-1'>Es ist kein Kategorie vorhanden!</font>";
    }
?>

Und die JS-Funktion sieht so aus:
PHP:
    function combo(form_name)
    {
        if((document.forms[form_name].combo_Kat.selectedIndex && document.forms[form_name].combo_Lief.selectedIndex) != 0)
        {
            document.forms[form_name].action.disabled = (this.selectedIndex == 0 ? true : false);
        }
        else
        {
            document.forms[form_name].action.disabled = (this.selectedIndex != 0 ? true : false);
        }
    }

Mein Problem ist, wenn einer der beiden Comboboxen nicht vorhanden ist / existiert (ist ja auch klar, wenn der if-schleife == false ist) und somit kommt auch diese eine Fehlermeldung die ich schon oben gepostet habe...

Freue mich auf jede kleine Hilfe und hoffe ich könnt mir auch Helfen...

MfG
Spacedoener
 
Du könntest mit einem try/catch Statement arbeiten.....

....da wird das eine mit "try"probiert....wenn es fehlschlägt, kannst du den entstehenden Fehler per "catch" abfangen.

Infos zu try/catch
 
Habs nochmal genauer betrachtet....

zum einen...der Objektverweis per "this" funktioniert innerhalb der Funktion so nicht... du musst der Funktion die Auswahlliste per "this" beim Aufruf übergeben.
Ob eine der Listen fehlt, kannst du per "typeof" ermitteln, das gibt "object"zurück, wenn die jeweilige Liste existiert.

Ich hab das jetzt so verstanden, dass "action" ein Button ist, welcher deaktiviert werden soll, wenn:

a.)Eine der Listen nicht existiert und der selectedIndex 0 ist

oder

b.)Beide Listen existieren und der selectedIndex nicht 0 ist


wenn ichs richtig verstanden habe, könnte das so aussehen:
Code:
<script type="text/javascript">
<!--
function combo(objSelect)
    {
    cond1=(typeof objSelect.form.combo_Kat=='object'&&typeof objSelect.form.combo_Lief=='object')? 1 : 0;
    cond2=(objSelect.selectedIndex==0)? 0 : 1;
    objSelect.form.action.disabled=(cond1==cond2)?true:false;
    }
//-->
</script>
der Aufruf erfolgt per:
Code:
<select name="combo_Kat"onchange="combo(this)">
<!--bzw.-->
<select name="combo_Lief"onchange="combo(this)">
 
Zuletzt bearbeitet:
Original geschrieben von fatalus
Habs nochmal genauer betrachtet....

zum einen...der Objektverweis per "this" funktioniert innerhalb der Funktion so nicht... du musst der Funktion die Auswahlliste per "this" beim Aufruf übergeben.
Ob eine der Listen fehlt, kannst du per "typeof" ermitteln, das gibt "object"zurück, wenn die jeweilige Liste existiert.

Ich hab das jetzt so verstanden, dass "action" ein Button ist, welcher deaktiviert werden soll, wenn:

a.)Eine der Listen nicht existiert und der selectedIndex 0 ist

oder

b.)Beide Listen existieren und der selectedIndex nicht 0 ist


wenn ichs richtig verstanden habe, könnte das so aussehen:
Code:
<script type="text/javascript">
<!--
function combo(objSelect)
    {
    cond1=(typeof objSelect.form.combo_Kat=='object'&&typeof objSelect.form.combo_Lief=='object')? 1 : 0;
    cond2=(objSelect.selectedIndex==0)? 0 : 1;
    objSelect.form.action.disabled=(cond1==cond2)?true:false;
    }
//-->
</script>

der Aufruf erfolgt per:
Code:
<select name="combo_Kat"onchange="combo(this)">
<!--bzw.-->
<select name="combo_Lief"onchange="combo(this)">

Juhuuu es klappt...
Genau so wollte ich es haben *freu...
Bist ein Genie ;-)

Du ich habe noch einen Problem wo mit ich gar nicht klar komme, hoffe du kannst mir dabei Helfen...

Also, ich habe per div und javascript eine Menü gebastelt, was auch herrvoragend funktioniert...
Leider funktioniert die Links (also <a href...>) nur dann, wenn mehrere Links die gleiche Pfade haben, indemfall momentan nur mit "#"...
Aber wenn ich zu jedem Link einen anderen Pfad setze, dann klappt nichts mehr *heul...
Kannst du mir dabei Helfen bitte ?

Das ganze sieht so aus...

PHP:
<script type="text/javascript">
<!--

function show(divid) {
document.getElementById("cat1").style.display="none";
document.getElementById("cat2").style.display="none";

document.getElementById(divid).style.display="inline";

}
//-->
</script>



<a href="#" onclick="show('cat1')">Category 1</a><br>
<div id="cat1" style="display:none">
<a href="#" class="sub">Sub 1</a><br>
<a href="#" class="sub">Sub 2</a><br>
<a href="#" class="sub">Sub 3</a><br>
</div><br>
<a href="#" onclick="show('cat2')">Category 2</a><br>
<div id="cat2" style="display:none">
<a href="#" class="sub">Sub 1</a><br>
<a href="#" class="sub">Sub 2</a><br>
<a href="#" class="sub">Sub 3</a><br>
</div><br>

Freue mich wirklich auf jede kleine Hilfe von euch...

MfG
Spacedoener

PS: Wünsche euch allen Frohes Ostern !
 
Zuletzt bearbeitet:
Bevor wir uns zu dem neuen Problem in 2 verschiedenen Threads austauschen, würd ich vorschlagen, wir einigen uns darauf, diesen hier ruhen zu lassen, und dort weiterzumachen :-):)
 

Neue Beiträge

Zurück