Das passende Event ist
DOMContentLoaded
Gekauft.
und addEventHandler() verwenden.
Gekauft.
Und verbergen sollte man das auch nicht per JavaScript (style.display), sondern die bereits im DOM vorhande Information per Stylesheet nutzen: [disabled] { display: none }.)
Das hängt von einer ganzen Reihe weicher Umstände ab. Aus meiner Sicht wäre der Satz mit "kann" statt mit "sollte" zutreffender formuliert. Immerhin verteilt man, wenn man allen Deinen Vorschlägen folgt, die Funktionsweise auf 1.) html, 2.) css 3.) javascript. Was den Vorgang nicht wirklich transparenter macht wenn später mal jemand herausfinden muss was da eigentlich abläuft.
Dann ist auch keine if-Abfrage nötig. Der boolesche Wert ist ja gerade derjenige, den man required zuweisen möchte:
obj.required = document.getElementById('wechselYes').checked;
(Entsprechend ginge auch obj.disabled = !document.getElementById('wechselYes').checked;
Ist schon klar. Kaufe ich aber trotzdem nicht. Begründung:
obj.required = document.getElementById('wechselYes').checked;
obj.disabled = !document.getElementById('wechselYes').checked
ist weder wirklich kürzer noch wirklich schöner noch wirklich schneller. Und klarer ist es auch nicht denn viele müssen mehr darüber nachdenken was da geschieht als wenn in einem if-else-Konstrukt konkrete (einfach lesbare) Angaben erfolgen.
Es war lediglich gewünscht, Felder (nicht) als Pflichtfelder vorzusehen; nicht, in diesen Feldern Eingaben zu verbieten oder gar bereits getätigte Eingaben zu löschen.
Die Information, ob required oder nicht, könnte man auch per Stylesheet nutzen und bspw. * bei Pflichtfeldern anzeigen.
Sieht auf den ersten Blick wie eine gute Idee aus - ist es zumindest in der gezeigten Realisierung aber nicht. Du zeigst den Asterix nicht bei, sondern im Pflichtfeld und dann auch noch 1.) in der Schriftfarbe und 2.) auf der linken Seite an. 3.) bleibt er bei Eingaben dort stehen. Das kann und wird Benutzer verwirren. Besonders wenn es sich um ein Passwortfeld handelt. Einfacher und und in vielen Fällen zielführender wäre es, dass man, wenn man denn schon ausgerechnet einen Asterix anzeigen will (oder soll), dieses einfach mit <input placeholder='*'> macht oder den Platzhalter dynamisch mit Javascript setzt. Natürlich nur dann wenn kein anderer Platzhalter gewünscht ist. Ohnehin kann es als durchgesetzt gelten den Asterix als Erkennungszeichen für Pflichtfelder rechts von diesen anzuzeigen. Uniformität ist zwar nicht "schön" aber wenn man von solchen verbreiteten Nutzergewohnheiten abweicht sollte man mindestens einen sehr guten Grund dafür haben.
(Anpassung für IE) Hab ich mir hier mal gespart.
Hätte sich aus den genannten Gründen auch nicht gelohnt.