Ich habe eine Webseite, die hauptsächlich von mobilen Benutzern (etwa 80% meiner Benutzer) verwendet wird, mit etwa 350 <input type="checkbox">
Elementen. Wenn ein Kontrollkästchen aktiviert oder deaktiviert ist, möchte ich einige Javascript aufrufen, um den Status im lokalen Speicher zu speichern. Wenn ich meine Seite erstellt gab es nur etwa 100 Elemente so, anstatt, jedes Element <input type="checkbox" onclick="save();">
, die auf Tippfehler anfällig schien vergessen oder einfach nur die onclick
hinzuzufügen, habe ich diese auf meine onload
Funktion:Was ist der einfachste Weg, um onclick() zu Hunderten von Checkboxen hinzuzufügen?
var input_elements = document.querySelectorAll("input[type='checkbox']");
for (var i = 0; i < input_elements.length; i++) {
input_elements[i].addEventListener("click", function() { save(this); });
}
die großen Werke aber fügt den Ladezeiten der Seiten eine kleine Strafe hinzu - die sich immer verschlechtert, wenn ich Elemente hinzufüge, und ich rechne damit, jedes Jahr weitere 100-150 hinzuzufügen.
Gibt es einen "besseren" Weg dies zu tun, sowohl in Bezug auf die Verringerung Ladezeiten (besonders für mobile Benutzer mit langsameren Browsern) und verhindert mir dumme Tippfehler, die etwas für meine Benutzer brechen, sind aber schwer für mich Stelle?
Sie Ereignishandler auf einem gemeinsamen Elternteil hinzufügen können - Verwendung Ereignis Delegation Mechanismus –
Eine kleine Optimierung kann eine benannte Funktion haben und sie als Handler verwenden. '.addEventListener (" klick ", meinHandler)'. Dies hat das erste Argument als Ereignis und Kontext als Element – Rajesh
@Maximus, das funktioniert. Danke, dieser Suchbegriff war alles was ich brauchte. Fügen Sie diesen Kommentar in eine Antwort ein, damit ich sie akzeptieren kann? – drewbenn