• Привет всем, нужно менять цвет картинки авто по клику на кружочек, то есть цвет кружочка должен соответствовать цвету машины .Как это реализовать?

    0xD34F
    @0xD34F Куратор тега JavaScript
    <div class="colorsSelector">
      <div class="colorItem" data-color="blue"></div>
      <div class="colorItem" data-color="white"></div>
      <div class="colorItem" data-color="red"></div>
      <div class="colorItem" data-color="black"></div>
      <div class="colorItem" data-color="white-pure"></div>
      <div class="colorItem" data-color="orange"></div>
      <div class="colorItem" data-color="graphite"></div>
    </div>

    [data-color="blue"]       { background-color: #325488; }
    [data-color="white"]      { background-color: #cfcfcf; }
    [data-color="red"]        { background-color: #c64040; }
    [data-color="black"]      { background-color: #08090b; }
    [data-color="white-pure"] { background-color: #f0f0f0; }
    [data-color="orange"]     { background-color: #d87c5a; }
    [data-color="graphite"]   { background-color: #7f7f7f; }

    const container = document.querySelector('.colorsSelector');
    const itemSelector = '.colorItem';
    const activeClass = 'colorItem--active';
    const img = document.querySelector('.imgHolder img');
    const src = color => `//webcademy.ru/files/js2020/solaris/${color}.png`;
    
    
    // делегированный обработчик клика назначается контейнеру с цветами
    container.addEventListener('click', ({ target: { dataset: { color } } }) => {
      if (color) {
        img.src = src(color);
        document.querySelectorAll(itemSelector).forEach(n => {
          n.classList.toggle(activeClass, color === n.dataset.color);
        });
      }
    });
    
    // или, каждому цвету обработчик клика назначается индивидуально
    const items = container.querySelectorAll(itemSelector);
    items.forEach(n => n.addEventListener('click', onClick));
    
    function onClick({ target: t }) {
      img.src = src(t.dataset.color);
      items.forEach(n => n.classList.toggle(activeClass, n === t));
    }
    Ответ написан
    7 комментариев