Как сделать что бы не дублировать код в JS?

232
29 марта 2017, 17:45

Здравствуйте.

Подскажите, как сделать, чтобы не дублировать этот код:

var showError = function(el) {
  el.parentNode.classList.remove('error');
  el.parentNode.classList.add('success');
  el.nextElementSibling.InnerHTML = element.dataset.error;
}
var showSuccess = function(el) {
  el.parentNode.classList.remove('error');
  el.parentNode.classList.add('success');
  el.nextElementSibling.InnerHTML = '';
}
Answer 1
function getClassSwitcher(classOff, classOn, getErrorMsg) {
  return function(el) {
    el.parentNode.classList.remove(classOff);
    el.parentNode.classList.add(classOn);
    el.nextElementSibling.innerHTML = getErrorMsg();
  };
}
var showError = getClassSwitcher('success', 'error', () => element.dataset.error);
var showError = getClassSwitcher('error', 'success', () => '');

Вариант попроще:

function toggleClasses(el, on, off) {
  el.classList.remove(off);
  el.classList.add(on);
}
var showError = function(el) {
  toggleClasses(el.parentNode, 'error', 'success');
  el.nextElementSibling.innerHTML = element.dataset.error;
}
var showSuccess = function(el) {
  toggleClasses(el.parentNode, 'success', 'error');
  el.nextElementSibling.innerHTML = '';
}
READ ALSO
Angular 2 | Как связать 2 разных меню между собой?

Angular 2 | Как связать 2 разных меню между собой?

Всем привет! Изучаю angular 2 и столкнулся с проблемкой

268
Конвертировать дату в формате timestamp

Конвертировать дату в формате timestamp

Здравствуйте! Требуется помощь

254
Почему JavaScript такой какой он есть сейчас? [требует правки]

Почему JavaScript такой какой он есть сейчас? [требует правки]

Глядя на те языки, которые были доступны на момент создания JavaScript, я задаюсь вопросом: Почему JavaScript пошел именно этим путем и стал таким, каким...

223
Определить с какого места на компьютере загружается файл

Определить с какого места на компьютере загружается файл

Как можно определить на php или javascript с какого места идет загрузка файла на сервер, это нужно для предварительного просмотра формы перез ее отправкоой...

237