Как сократить JS-код?

217
29 марта 2017, 17:28

Простой код, но блоков может быть много. Как оптимизировать?

ch1.onclick = function() {
    if (ch1.checked) { document.getElementById('lab1').disabled = false; }
    else { document.getElementById('lab1').disabled = true; }
};
ch2.onclick = function() {
    if (ch2.checked) { document.getElementById('lab2').disabled = false; }
    else { document.getElementById('lab2').disabled = true; }
};
Answer 1
function CheckBoxChange(aCheckbox, aLabelId) {
  if (aCheckbox.checked) { 
    document.getElementById(aLabelId).disabled = false; 
  } else { 
    document.getElementById(aLabelId).disabled = true; 
  }
};
ch1.onclick = function() { CheckBoxChange(this, 'lab1'); };
ch2.onclick = function() { CheckBoxChange(this, 'lab2'); };
Answer 2

объединил предыдущие коменты:

function makeCheckBoxChange(aCheckbox, aLabelId) {
   return function () {
     document.getElementById(aLabelId).disabled = !(aCheckbox.checked);
   };
}
ch1.onclick = makeCheckBoxChange(ch1, 'lab1');
ch2.onclick = makeCheckBoxChange(ch2, 'lab2');
READ ALSO
Несколько вызовов функции

Несколько вызовов функции

В IndexService есть consolelog(), так вот выводится два раза, когда я обращаюсь к методу сервиса, а значит он вызывается несколько раз

199
В чём разница между new Date('2017-01-01') и new Date('2017-1-1')?

В чём разница между new Date('2017-01-01') и new Date('2017-1-1')?

Почему new Date('2017-01-01') и new Date('2017-1-1') выдают разное время?

181
Как отключить на мобильной версии сайта скрипты?

Как отключить на мобильной версии сайта скрипты?

Здравствуйте подскажите как отключить на мобильной версии сайта ненужные скрипты ?за ранние спасибо

379
Не убирается placeholder после вставки значений в input

Не убирается placeholder после вставки значений в input

Ситуацию изобразил на изображениипосле нажатия на радио кнопку идет вставка в поля значений, при котором плейсхолдер не убирается

240