Checkbox - Fehler

Callboy

Mitglied
Hi,

habe ein Problem, und zwar habe ich für meinen Checkboxen die über dem PHP nach dem Inhalt der Datenbank-Tabelle (anzahl der Reihen in der Tabelle) erstellt werden folgende Fehlermeldung, wenn ich sie über selbst definierten funktion laufen lasse.

Fehlermeldung:
js-fehlermeldung.jpg


Meine selbst definierte Funktion:
PHP:
function change(feld, form_name)
{
    var i, frm, cond1, ausführen = false;

    switch(form_name)
    {
        case "kunden"     : frm = document.forms.kunden; break;
        case "artikel"    : frm = document.forms.artikel; break;
        case "kategorie"  : frm = document.forms.kategorie; break;
        case "lieferanten": frm = document.forms.lieferanten; break;
        case "warenkorb"  : frm = document.forms.warenkorb; break;
        default           : alert("Der Formular von der Datei konnte nicht erkannt werden!"); ausführen = true;
    }

    if(!ausführen)
    {
        if((feld != 0) || (feld != 1))
        {
            if(document.forms[form_name].elements['spalt_loeschen[]'][feld].checked == true)
            {
                for(i=0; i<frm.elements['spalt_loeschen[]'].length; i++)
                {
                    if(feld!=i)
                    {
                        document.forms[form_name].elements['spalt_loeschen[]'][i].disabled = true;
                    }
                }
            }
            else
            {
                for(i=0; i<frm.elements['spalt_loeschen[]'].length; i++)
                {
                    if(feld!=i)
                    {
                        document.forms[form_name].elements['spalt_loeschen[]'][i].disabled = false;
                    }
                }
            }
        }
        else
        {
            alert("Ein unbekannter Fehler ist aufgetreten!");
        }
    }
}

Würde mich echt sehr freuen, wenn Ihr mir hierbei Helfen könnt !

MfG
Callboy
 
Wenn du dir sicher bist, dass dieses Element existiert, stören möglicherweise die eckigen Klammern im Namen dieses Elements.... die sind für PHP zwar nützlich.... lt. Javascript aber nicht gestattet(nur Buchstaben, Ziffern, Unterstrich)
 
Original geschrieben von fatalus
Wenn du dir sicher bist, dass dieses Element existiert, stören möglicherweise die eckigen Klammern im Namen dieses Elements.... die sind für PHP zwar nützlich.... lt. Javascript aber nicht gestattet(nur Buchstaben, Ziffern, Unterstrich)

Hi,

dankeschön für deine rasche Hilfe aber ich weiß gar nicht was du genau meinst...
Kannst du dies nicht etwas genauer erklären ?
Mein ganze Script wimmelt von eckigen Klammern...

MfG
Callboy
 
z.B. "'spalt_loeschen[]" ....das soll ja, so nehme ich an, der Name eines Formularelementes sein.

Lt. Javascript sind dort aber keine Klammern erlaubt... halt nur Buchstabe, Ziffer, Unterstrich.
 
Original geschrieben von fatalus
z.B. "'spalt_loeschen[]" ....das soll ja, so nehme ich an, der Name eines Formularelementes sein.

Lt. Javascript sind dort aber keine Klammern erlaubt... halt nur Buchstabe, Ziffer, Unterstrich.

Hi,

dankeschön für deine schnelle Hilfe...
Aber wie soll ich das dann halt machen, wenn ich mehrere davon per php (dynamisch) erstelle ?
Habe es absichtlich als array angegeben, weil es halt mehrere von denen gibt und das script führt dann alle aus...
Oder bräuchte man das da nicht so ?

Wie wäre es denn richtig, wenn man mit der gleichen namen mehrere von denen erstellt ?

Freue mich auf jede kleine Hilfe von euch...

MfG
Callboy
 
An den Klammern scheints doch nicht zu liegen.

Das Problem tritt bei mir dann auf, wenn weniger als 2 Elemente mit diesem Namen in dem Formular existieren...
dann wird aus selbigem kein Array gebildet.

Wenn dies auch bei dir das Problem sein sollte, könntest du die length-Eigenschaft des Elementes abfragen,... ist diese kleiner als 2, spreche das Element nur mit seinem Namen an....
ansonsten über seinen Array-Index:
Code:
objChk=(document.forms[form_name].elements['spalt_loeschen[]'].length>1)?document.forms[form_name].elements['spalt_loeschen[]'][i]:document.forms[form_name].elements['spalt_loeschen[]'];
objChk.disabled=true;


Falls es an etwas anderem liegt, sag Bescheid;)
 
Original geschrieben von fatalus
An den Klammern scheints doch nicht zu liegen.

Das Problem tritt bei mir dann auf, wenn weniger als 2 Elemente mit diesem Namen in dem Formular existieren...
dann wird aus selbigem kein Array gebildet.

Wenn dies auch bei dir das Problem sein sollte, könntest du die length-Eigenschaft des Elementes abfragen,... ist diese kleiner als 2, spreche das Element nur mit seinem Namen an....
ansonsten über seinen Array-Index:
Code:
objChk=(document.forms[form_name].elements['spalt_loeschen[]'].length>1)?document.forms[form_name].elements['spalt_loeschen[]'][i]:document.forms[form_name].elements['spalt_loeschen[]'];
objChk.disabled=true;



Falls es an etwas anderem liegt, sag Bescheid;)


Hi,

dankeschön für deine Hilfe, aber ich raffe die s c h e i ß e nicht mehr...
Es kommt wieder der gleiche fehler nur jetzt meckert der über deine "objChk"...

Bitte schreib es etwas ausführlicher damit ich es besser verstehen kann und es in meinem Funktion einbauen kann...

Weiß nicht genau wohin mit deinem 2 Zeilen *heul...
Wie ich jetzt noch feststelle funktioniert jetzt meine 2. funktion auch nicht mehr mit dem neuen datei...

PHP:
function auswahl(form_name)
{
    var c, d, i, frm, ausführen = false;

    switch(form_name)
    {
        case "kunden"     : frm = document.forms.kunden; break;
        case "artikel"    : frm = document.forms.artikel; break;
        case "kategorie"  : frm = document.forms.kategorie; break;
        case "lieferanten": frm = document.forms.lieferanten; break;
        case "warenkorb"  : frm = document.forms.warenkorb; alert("fuck");break;
        default           : alert("Der Formular von der Datei konnte nicht erkannt werden!"); ausführen = true;
    }

    if(!ausführen)
    {
        if(frm.elements['spalt_loeschen[]'][0] == undefined)
        {
            c = frm.elements['spalt_loeschen[]'].checked;
            d = frm.elements['spalt_loeschen[]'].disabled;

            if((c == false) && (d == false))
            {
                c = frm.elements['spalt_loeschen[]'].checked = true;
            }
            else
            {
                c = frm.elements['spalt_loeschen[]'].checked = false;
            }
        }
        else
        {
            for(i=0; i<frm.elements['spalt_loeschen[]'].length; i++)
            {
                c = document.forms[form_name].elements['spalt_loeschen[]'][i].checked;
                d = document.forms[form_name].elements['spalt_loeschen[]'][i].disabled;

                if((c == false) && (d == false))
                {
                    c = document.forms[form_name].elements['spalt_loeschen[]'][i].checked = true;
                }
                else
                {
                    c = document.forms[form_name].elements['spalt_loeschen[]'][i].checked = false;
                }
            }
        }
    }
}

Da kommt der gleiche fehler meldung...

Ich glaube JS ist wirklich behämmert...
Würde mich echt sehr freuen, wenn ihr mir Helfen könnt, denn ich komme gar nicht mehr weiter...

MfG
Callboy
 
Zuletzt bearbeitet:
Die beiden Zeilen müssen überall dorthin, wo du versuchst, über
Code:
document.forms[form_name].elements['spalt_loeschen[]'][i]
auf dieses Feld zuzugreifen.

Es scheint halt so zu sein, dass du versuchst, auf ein Element zuzugreifen, welches dein PHP-Skript anscheinend nicht erzeugt hat....
dies besagt die Fehlermeldung.

Schau doch mal in den Quelltext der Datei, dann siehst du, was Sache ist....

oder füge folgendes in deine Funktion(en) ein...(im Anschluss an die switch-Anweisung)
Code:
strMsg=false;
if(!ausführen)
    {
    for(e=0;e<frm.elements.length;++e)
        {
        if(frm.elements[e].name=='spalt_loeschen[]')
            {
            intCount=(frm.elements['spalt_loeschen[]'].length>1)?frm.elements['spalt_loeschen[]'].length:1;
            strMsg='In Formular"'+frm.name+'" befinde';
            strMsg+=(intCount>1)?'n sich '+intCount+' Elemente':'t sich 1 Element';
            strMsg+=' namens "spalt_loeschen[]".\nDu kannst diese';
            strMsg+=(intCount>1)?' über....\n\ndocument.forms[\''+frm.name+'\'].elements[\'spalt_loeschen[]\'][0-'+(intCount-1)+']\n\n....ansprechen':
            's über....\n\ndocument.forms[\''+frm.name+'\'].elements[\'spalt_loeschen[]\']\n\n....ansprechen';
            }
        }
    }
alert((!strMsg)?'In Formular"'+frm.name+'" befindet sich kein Element namens "spalt_loeschen[]"':strMsg);
 
Hi Fatalus,

dankeschön für deine Hilfe *freu...
Werde es jetzt gleich sofort austesten und hoffe es klappt nun...

Also du sagst, ich soll die 2 Zeilen durch dieses
PHP:
document.forms[form_name].elements['spalt_loeschen[]'][i]
ersetzen und nichts dabei bedenken ?

Weil, dieses hier "objChk.disabled=true;" irritiert mich sehr... !

Naja ich teste es mal, ich hoffe ich bekomme es in die reihe und habe nichts falsch verstanden...

MfG
Callboy
 
Nun habe ich es getestet aber es half nichts...
Ich verstehe es gar nicht *heul...
Warum funktioniert es denn nicht...

Deine 2 Zeilen Fatalus kann ich doch schlecht in den IF-Zweig, also in den Klammer nicht setzen, wie und wo genau und was genau muss ich jetzt machen ?

Die Funktion sieht momentan so aus, deine zwei Zeilen habe ich in Kommentaren...

PHP:
function change(feld, form_name)
{
    var i, frm, ausführen = false;

    switch(form_name)
    {
        case "kunden"     : frm = document.forms.kunden; break;
        case "artikel"    : frm = document.forms.artikel; break;
        case "kategorie"  : frm = document.forms.kategorie; break;
        case "lieferanten": frm = document.forms.lieferanten; break;
        case "warenkorb1"  : frm = document.forms.warenkorb1;  break;
        default           : alert("Der Formular von der Datei konnte nicht erkannt werden!"); ausführen = true;
    }
    
    //objChk=(document.forms[form_name].elements['spalt_loeschen[]'].length>1)?document.forms[form_name].elements['spalt_loeschen[]'][i]:document.forms[form_name].elements['spalt_loeschen[]'];
    //objChk.disabled=true;


    strMsg=false;

    if(!ausführen)
    {
        for(e=0;e<frm.elements.length;++e)
        {
            if(frm.elements[e].name=='spalt_loeschen[]')
            {
                intCount=(frm.elements['spalt_loeschen[]'].length>1)?frm.elements['spalt_loeschen[]'].length:1;
                strMsg='In Formular"'+frm.name+'" befinde';
                strMsg+=(intCount>1)?'n sich '+intCount+' Elemente':'t sich 1 Element';
                strMsg+=' namens "spalt_loeschen[]".\nDu kannst diese';
                strMsg+=(intCount>1)?' über....\n\ndocument.forms[''+frm.name+''].elements['spalt_loeschen[]'][0-'+(intCount-1)+']\n\n....ansprechen':'s über....\n\ndocument.forms[''+frm.name+''].elements['spalt_loeschen[]']\n\n....ansprechen';
            }
        }

        if(feld != 0)
        {
            if(document.forms[form_name].elements['spalt_loeschen[]'][feld].checked == true)
            {
                for(i=0; i<frm.elements['spalt_loeschen[]'].length; i++)
                {
                    if(feld!=i)
                    {
                        document.forms[form_name].elements['spalt_loeschen[]'][i].disabled = true;
                    }
                }
            }
            else
            {
                for(i=0; i<frm.elements['spalt_loeschen[]'].length; i++)
                {
                    if(feld!=i)
                    {
                        document.forms[form_name].elements['spalt_loeschen[]'][i].disabled = false;
                    }
                }
            }
        }
        else
        {
            alert("Ein unbekannter Fehler ist aufgetreten!");
        }
    }
    alert((!strMsg)?'In Formular"'+frm.name+'" befindet sich kein Element namens "spalt_loeschen[]"':strMsg);
}


So Hilf mir bitte ich check das nicht mehr und weiß wirklich gar nicht mehr weiter...
Bin wirklich völlig mit dem Nerven fix und fertig...

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

MfG
Callboy
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück