gruss aerusque,
Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle
checkboxes angeklickt worden sind, um abhängig davon dann weitere
Funktionen auszuführen.
Deine problemstellung schreit foermlich dannach, mit dem statischen
[[Array]]-iterator [filter] sowie dem [[Array]]-iterator [every]
erschlagen zu werden:
~~~javascript
var inputList = document.forms["formNameOrId"].getElementsByTagName("input");
var isEvery = Array.filter(inputList, (function (elm/, idx, arr/) {
return (elm.type == "checkbox");
})).every(function (elm/, idx, arr/) {
return elm.checked;
});
if (isEvery) {
// whatsoever
} else {
// everything else
}
als eine einzige kompakt formulierte bedingung kaeme dass dann so daher:
~~~javascript
if (Array.filter(document.forms["formNameOrId"].getElementsByTagName("input"), (function (elm/*, idx, arr*/) {
return (elm.type == "checkbox");
})).every(function (elm/*, idx, arr*/) {
return elm.checked;
})) {
// whatsoever
} else {
// everything else
}
zur info: array-iteratoren wurden mit JavaScript 1.6 durch mozilla.org eingefuehrt.
mittlerweile gibt es einige gute implementierungen, die dieses schoene, schnelle
und ausdrucksstarke programmierkonzept in allen javascriptfaehigen browsern
ermoeglicht - ich habe mich ebenfalls an einer solchen versucht:
jsApi.Array.mozExtensions.dev.js
jsApi.Array.mozExtensions.js
jsApi.Array.mozGenerics.dev.js
jsApi.Array.mozGenerics.js
so long - peterS. - pseliger@gmx.net
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]