peterS.: radiogroup-spielkram: ...ich auch, ich auch... ;-)

Beitrag lesen

gruss czRIpper,

...

function uncheck(radio){

if (radiotype == radio){
  klick = klick + 1;
  if (klick % 2 == 0) {
   radio.checked = false;
  } else
   radio.checked = true;
}else{
  radiotype = radio;
}
}


> ...  
> ~~~html

<input type="radio" name="radio" id="radio1" onclick="javascript:uncheck(radio1)">  

> <input type="radio" name="radio" id="radio2" onclick="javascript:uncheck(radio2)">

-------------------------------------------------------^^^^^^^^^^^
  das pseudoprotokoll >>javascript:<< hat in einem eventhandler nichts verloren.

ausserdem ist es schon aus gruenden der wartbarkeit und pflege nicht ratsam,
  jedem element diesen handler explizit schon im html-code zuzuweisen.

deshalb versuch ich mich mal, nicht nur zu Deinem besten, sondern moeglichst zum
  wohle aller, die spaeter ueber die archivsuche auf diesen thread stossen werden,
  in einer *plug and play* loesung unter beruecksichtigung folgender quellen:

»Der sinnvolle Einsatz von JavaScript« - SELFHTML aktuell Weblog / Mathias Schäfer (molily) / 17.12.2005
  »DOM-getter und array-iteratoren - scripte schneller entwickeln« - SELFHTML Forumsarchiv / peterS. / 13.03.2007

~~~javascript var enableRadiogroupUncheck = function () {

Array.filter(document.getElementsByTagName("input"), (function (elm/, idx, arr/) {

return (elm.type == "radio");

})).forEach(function (elm/, idx, arr/) {

elm.onclick = function () {

this.checked = !this.mostRecentlyChecked;

Array.filter(this.form.elements[this.name], (function (elm/, idx, arr/) {
          return (elm.type == "radio");
        })).forEach(function (elm/, idx, arr/) {
          elm.mostRecentlyChecked = false;
        });
        this.mostRecentlyChecked = this.checked;
      };

elm.mostRecentlyChecked = elm.checked;
    });
  };
  if (window.addEventListener) {
    window.addEventListener("load", enableRadiogroupUncheck, true);
  } else if (window.attachEvent) {
    window.attachEvent("onload", enableRadiogroupUncheck);
  }

  
  
  durch eingabe folgender zeile in die location-bar eines halbwegs modernen mozillas  
  (natuerlich auf einer formularseite), ist dieser ansatz auch sofort ueberpruefbar:  
  
  javascript:`(function () {Array.filter(document.getElementsByTagName("input"), (function (elm) {return (elm.type == "radio");})).forEach(function (elm) {elm.onclick = function () {this.checked = !this.mostRecentlyChecked;Array.filter(this.form.elements[this.name], (function (elm) {return (elm.type == "radio");})).forEach(function (elm) {elm.mostRecentlyChecked = false;});this.mostRecentlyChecked = this.checked;};elm.mostRecentlyChecked = elm.checked;});})();`{:.language-javascript}  
  
  
   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](http://javascript.crockford.com/)  
  
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]