Hallo Jörg,
-
Was ist aria-alert, welche Spec definiert das? Ich finde es weder in WAI-ARIA 1.0 noch 1.1. Es gibt die alert-Rolle, die dazu führt, dass ein Screenreader aktiv wird wenn Du das Element einblendest.
-
Dein JavaScript hat nun noch weitere Kritikpunkte bekommen. Hast Du meinen Kommentar von 17:04 Uhr noch nicht entdeckt? Oder hältst Du ihn für Unsinn?
// Deins (ab IE 9 übrigens. getElementsByClassName gibt's im IE8 noch nicht)
function allSelected( className ) {
var flag = true;
var ar = document.getElementsByClassName( className );
for ( var i = 0; i < ar.length; i++) {
if ( false == ar[i].checked ) {
var flag = false;
i = 1 + ar.length;
}
}
return flag;
}
// Weniger umständlich
// (Ausstieg aus einer Schleife ist in kleinen Methoden durchaus legitim)
function allSelected( className ) {
var ar = document.getElementsByClassName( className );
for ( var i = 0; i < ar.length; i++) {
if ( !ar[i].checked ) return false;
}
return true;
}
// Kompakte Lösung (auch IE9, wegen :checked und :not() )
function allSelected( className ) {
return document.querySelector("."+className+":not(:checked)") == null
}
// Und eigentlich sollte man das nicht über's Dokument machen, sondern über den Container,
// der die Tabelle enthält
-
Zwei Klassen zu verwenden (Activated/notActivated) ist ebenfalls umständlich. Verwende nur eine, benutze :not(.activated) statt .notActivated.
-
Dass es unnötig umständlich ist, den Eventhandler umzuregistrieren, hatte ich vorher schon erwähnt.
-
Es ist ebenso umständlich, einen change Handler auf jede einzelne Checkbox zu legen. Registriere einen einzigen Change-Handler auf die Table und prüfe, ob das event.target ein
input[type=checkbox].MultiSelectors
ist. Entweder ausprogrammiert über tagName, type und classList, oder matches-Methode in Element.prototype (und einem kleinen Polyfill, weil die Methode in älteren Browsern matchesSelector heißt und ggf. Vendor-Präfixe hat) -
Übrigens fände ich
row-selector
als Klassenname eine viel bessere Wahl alsMultiSelectors
. Aber das mag Geschmackssache sein.
Rolf
sumpsi - posui - clusi