checkbox - eine anklicken, alle makieren
Gunnar
- javascript
Hallo,
ich hoffe jemand kann mir helfen. Ich habe ein PHP-Script in dem ich mir Waren aus einer Datenbankhole und aufliste.
nun möchte ich mit hilfe von checkboxen die waren markieren, um sie in den warenkorb zu legen.
Artikel 1 <input type=checkbox name=ware value=1><br>
Artikel 2 <input type=checkbox name=ware value=2><br>
Artikel 3 <input type=checkbox name=ware value=3><br>
Artikel 4 <input type=checkbox name=ware value=4><br><br>
Alle wählen <input type=checkbox name=ware value=alle><br>
wenn ich alle artikel in der übersicht anklicke, soll sich gleichzeitig automatisch das häkchen bei "Alle wählen" aktivieren. und das gleiche natürlich auch andersherum. wenn ich auf "Alle wählen" gehe, sollen sich dann automatisch alle häkchen der einzelnen artikel aktivieren.
wie kann ich das machen? zu beachten ist dabei, das die liste der artikel dynamisch ist und sich immer ändern kann.
wäre toll wenn ich hier hilfe bekommen würde!
danke im voraus.
gruß diego
Moin!
hier ist schon mal die halbe Arbeit: wenn du beim Klick diese Funktion aufrufst und (this) übergibst, dann macht er alle Häcken hin/weg.
Wie du das Häckchen kriegst wenn manuell alle angeklickt werden, musst du noch implementieren. Wenn du's hinkriegst, sag bescheid.
function selectall(thisbox){
if(thisbox.checked == false){
var i=0;
while(document.form1.elements[i]){
if (document.form1.elements[i].type == "checkbox"){
document.form1.elements[i].checked = false;
}
i++;
}
}
else{
var i=0;
while(document.form1.elements[i]){
if (document.form1.elements[i].type == "checkbox"){
document.form1.elements[i].checked = true;
}
i++;
}
}
}
Gruß, Jeremy
hallo, danke dir für deine vorarbeit, hat wunderbar geklappt. doch mit dem anderen teil habe ich noch meine liebe mühe. vielleicht hast du noch ne idee, denn der zählt irgendwie nicht hoch. in count wird die anzahl der checkboxen übertragen und wenn dieser wert erreicht wird soll content_alle aktiviert werden:
function selectthis(thisbox, count)
{
if (anzahl > 0)
{
document.write("<b>Anzahl ist größer 0, Anzahl ist: " + anzahl );
if(thisbox.checked == false)
{
document.write("<b>Anzahl der Checkboxen ist: " + count );
i++;
}
else
{
document.write("<b>Anzahl der Checkboxen ist: " + count + " und Anzahl der geklickten Checkboxen ist: " + anzahl);
i--;
}
}
else
{
var anzahl=0;
if(thisbox.checked == true)
{
var anzahl = anzahl+1;
document.write("<b>Anzahl ist: " + anzahl );
}
}
if (anzahl == count)
{
document.formular.content_alle.checked = true;
}
else
{
document.formular.content_alle.checked = false;
}
}
kann noch wer helfen, komme einfach nicht weiter !!!
er zählt zwar die klicks, aber nur beim ersten. danach zählt er "anzahl" einfach nicht weiter hoch. was mach ich falsch?
function selectthis(thisbox, count)
{
if (anzahl)
{
if(thisbox.checked == true)
{
var anzahl = anzahl+1;
}
else
{
var anzahl = anzahl-1;
}
}
else
{
var anzahl=0;
if(thisbox.checked == true)
{
var anzahl = anzahl+1;
}
}
if (anzahl == count)
{
document.formular.content_alle.checked = true;
}
else
{
document.formular.content_alle.checked = false;
}
}
kann noch wer helfen, komme einfach nicht weiter !!!
er zählt zwar die klicks, aber nur beim ersten. danach zählt er "anzahl" einfach nicht weiter hoch. was mach ich falsch?
in meiner nochmal extra bescheidenen MHO und ohne spezielle javascriptkenntnisse, sieht das für mich so aus, als ob du in jeder if-verzweigung die variable neu deklarierst, eventuell äussere damit überschreibst und nirgends wo was zurück gibst.
ich würde sagen, entweder muss anzahl über this verfügbar sein und auch so angesprochen werden, oder sie muss mit an die funktion übergeben werden und dann auch mittels return wieder zurück.
n:d
hi,
in meiner nochmal extra bescheidenen MHO und ohne spezielle javascriptkenntnisse, sieht das für mich so aus, als ob du in jeder if-verzweigung die variable neu deklarierst, eventuell äussere damit überschreibst und nirgends wo was zurück gibst.
jepp, eine in einer funktion mit dem schlüsselwort var deklarierte variable ist eine lokale.
ich würde sagen, entweder muss anzahl über this verfügbar sein und auch so angesprochen werden, oder sie muss mit an die funktion übergeben werden und dann auch mittels return wieder zurück.
auch wenn globale variablen als unfein gelten, würde ich sie hier doch für angebrachter halten, als ein ständiges übergeben an die funtkion und zurückgeben.
also, unterschied zw. lokalen und globalen variablen unter http://selfhtml.teamone.de/javascript/sprache/variablen.htm#definieren nachlesen gehen.
gruss,
wahsaga
hi,
wenn ich auf "Alle wählen" gehe, sollen sich dann automatisch alle häkchen der einzelnen artikel aktivieren.
dann rufe eine funktion auf, die das elements-array durchläuft, prüft ob das element vom typ checkbox ist, und es wenn ja markiert.
so gut wie alles, was du brauchst, findest du unter http://selfhtml.teamone.de/javascript/objekte/elements.htm.
andersherum, wenn alle anderen checkboxen vom user markiert wurden, auch die "alle ankreuzen"-checkbox zu markieren, ist etwas aufwendiger - dann musst du beim markieren jeder checkbox eine funktion aufrufen, die einen zähler hochzählt, und wenn der gleich gesamtanzahl ist, auch die checkobx "alle markieren" ankreuzt. dabei nicht vergessen, den zähler wieder zu verringern, wenn eine checkbox wieder entmarkiert wird.
gruss,
wahsaga