Dkfolkin
@Dkfolkin
Люблю верстку

Как перезаписать значение переменной при использовании модулей?

Всем привет!
Попал в тупик!
Есть такая функция, которая лежит в отдельном модуле:
(function () {

  var getRandomColor = function (colors) {
    return colors[Math.floor(colors.length * Math.random())];
  };

  var rgbToHex = function (rgb) {
    rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);

    return (rgb && rgb.length === 4) ? '#' +
      ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) +
      ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) +
      ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';
  };

  window.colorize = function (el, colors, input, currentColor) {
    el.addEventListener('click', function () {
      var color = getRandomColor(colors);
      if (el.tagName.toLowerCase() === 'div') {
        el.style.backgroundColor = color;
        input.value = rgbToHex(el.style.backgroundColor);
      } else {
        el.style.fill = color;
        input.value = color;
      }
      currentColor = color;
    });
  };
})();


Мне нужно перезаписать переменные в другом модуле, в котором я её вызываю. Вот в этом:
(function () {

  var wizardCoat = document.querySelector('.wizard-coat');

  var wizardEye = document.querySelector('.wizard-eyes');

  var coatColor;

  var eyesColor;

  window.colorize(wizardCoat, window.wizardData.coatColorsList, document.querySelector('input[name = coat-color]'), coatColor);
  window.colorize(wizardEye, window.wizardData.eyesColorslist, document.querySelector('input[name = eyes-color]'), eyesColor);
})();


Как вы поняли, я попытался наивно добавить четвертый аргумент к функции colorize, но это не помогает. Как достать цвет и перезаписать переменные coatColor, eyesColor и присвоить им текущий цвет?
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Karpion
Я не понял, какой цвет Вы хотите достать. Ну, дописали Вы четвертый аргумент к функции colorize - а что дальше-то?

Навскидку мне кажется, что Вы не знаете разницу между передачей аргументов по ссылке (тогда при изменении внутри функции - аргумент изменится; тут возможны разнообразные странности) и по значению (тогда аргумент на выходе из функции измениться не может).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы