checkboxen problem

H0MER

Grünschnabel
Hi Leute.

folgendes problem:

ich habe mir aus dem internet nen javascript geholt, welches mir meine checkboxen alle in einem rutsch markiert und demarkiert.

die funktion sieht folgendermassen aus:
Code:
var Marker = "false";
function CheckboxenAktivieren(field){
if(Marker=="false")
{
for(i=0; i<field.length; i++)
{
field[i].checked = true;
}
Marker = "true";
return "Alle demarkieren";
}
else
{
for(i=0; i<field.length; i++)
{
field[i].checked = false;
}
Marker = "false";
return "Alle markieren";
}
}
und der aufruf der funktion geschieht so :

Code:
 <input type="button" onClick="this.value=CheckboxenAktivieren(this.form.Stadt());" value="Ich habe alle besucht">

so .. da ich von javascrip noch nicht so viel ahnung habe habe ich das erst mal so übernommen und verstanden, dass ich als Stadt den namen meiner Checkboxen eintragen muss.
das problem was ich habe ist, das meine namen der checkboxen arrays sind, damit ich auf einer späteren php seite das array auslesen kann um zu sehen welche checkboxen markiert wurden (wird der name der checkbox nicht als array angegeben, dann wird mit dem namen der checkbox nur der letzte wert der geklickten checkbox übertragen, jedoch nicht alle).
und hier bitte ich euch um hilfe, da ich wie gesagt keien ahnung von javascript habe.
wäre nett wenn ihr mir helfen könntet und ich bedanke mich schon mal im vorraus für eure antworten.

mfg
H0MER
ps. sollte ich etwas unklar ausgedrückt haben, dann fragt mich einfach wie ich es gemeint habe ;)
/edit: uups .. habe gerade festgestellt, dass die funktion die ich gepostet habe nicht die urspüngliche ist sondern die die ich schon verunstaltet habe ;
 
Zuletzt bearbeitet:

Sven Mintel

Mitglied
Code:
<script type="text/javascript">
<!--
arrBtnValues=['Auswahl aufheben'];
function check(objBtn)
{

if(arrBtnValues.length==1)
    {
    arrBtnValues.unshift(objBtn.value);
    }
blnEvt=(objBtn.value==arrBtnValues[0]);
for(arrObjs=objBtn.form.elements,e=0;e<arrObjs.length;++e)
    {
    if(arrObjs[e].name==objBtn.name&&arrObjs[e].type=="checkbox")
        {
        arrObjs[e].checked=blnEvt;
        }
    }
objBtn.value=(blnEvt)?arrBtnValues[1]:arrBtnValues[0];
}
//-->
</script>
Der Button muss den selben Namen haben, wie die dazugehörigen Checkboxes.
DerAufruf ist immer der selbe:
onclick="check(this)"

gutes Gelingen!
 

H0MER

Grünschnabel
hi!

vielen dabk für die antwort.
das hat mein problem gelöst.
das einzige problem was ich habe ist, dass wenn viele (ca 400) checkboxen auf einmal vorhanden sind das script ziemlich langsam ist.

mfg
H0MER
 

Sven Mintel

Mitglied
Um Zeit zu sparen, müsstest du die Elemente direkt ansprechen, und nicht, wie in meinem Skript, alle Formularelemente durchlaufen.

Da wären wir wir beim Ausgangsproblem... dem Feldnamen mit eckigen Klammern:
diese Felder kannst du so ansprechen...
Code:
for(i=0; i<document.formularname.elements['feldname[]'].length; i++)
{
    document.formularname.elements['feldname[]'][i].checked = true;//oder sonstwas
}

Übrigens: Verwende bitte eine korrekte Gross/Kleinschreibung.... siehe auch Netiquette#12