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

250
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(), так вот выводится два раза, когда я обращаюсь к методу сервиса, а значит он вызывается несколько раз

216
В чём разница между 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') выдают разное время?

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

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

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

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

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

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

260