Показать сообщение отдельно
  #1 (permalink)  
Старый 19.12.2013, 17:09
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Управление checkbox: упростить код (побороть говнокод)
Подскажите, как это упростить без jQuery?
Не получается загнать в цикл Или тут нужно баловаться с замыканиями?

function Id(a){ return document.getElementById(a); }

window.addEventListener('click', function(){ 

    var p1 = Id('p1').checked,  // Появляются динамически
        p2 = Id('p2').checked,  //  после выполнения функции 
        p3 = Id('p3').checked,  //  Polygon (см. ниже)
        p4 = Id('p4').checked;

    Id('p1').addEventListener('click', function(){ 
        if (!this.checked){ Polygon(0,p2,p3,p4); }
        else              { Polygon(1,p2,p3,p4); Id('p1').checked = true; }
        Id('p2').checked = p2;
        Id('p3').checked = p3;
        Id('p4').checked = p4;
    }, false);
    
    Id('p2').addEventListener('click', function(){ 
        if (!this.checked){ Polygon(p1,0,p3,p4); }
        else              { Polygon(p1,1,p3,p4); Id('p2').checked = true; }
        Id('p1').checked = p1;
        Id('p3').checked = p3;
        Id('p4').checked = p4;
    }, false);
        
    Id('p3').addEventListener('click', function(){ 
        if (this.checked){ Polygon(p1,p2,1,p4); Id('p3').checked = true; }
        else             { Polygon(p1,p2,0,p4); }
        Id('p1').checked = p1;
        Id('p2').checked = p2;
        Id('p4').checked = p4;
    }, false);

    Id('p4').addEventListener('click', function(){ 
        if (this.checked){ Polygon(p1,p2,p3,1); Id('p4').checked = true; }
        else             { Polygon(p1,p2,p3,0); }
        Id('p1').checked = p1;
        Id('p2').checked = p2;
        Id('p3').checked = p3;
    }, false);
    
}, false);

Последний раз редактировалось Demath, 19.12.2013 в 17:45. Причина: Опечатка в коде
Ответить с цитированием