Изменение цвета в JS с условными - PullRequest
0 голосов
/ 04 мая 2020

Я занимаюсь мини JS встречными проектами. Все отлично, хотя я застрял с тем, чтобы дать "0" определенный цвет. Пока мой код выглядит следующим образом

(function() {
  const counter = document.querySelector('h1');
  const add = document.querySelector('.increase');
  const substract = document.querySelector('.decrease');
  let count = 0;

  add.addEventListener('click', function() {
    counter.innerHTML = count++;
    if (count > 0) {
      counter.classList.add('over')
    }
  })

  substract.addEventListener('click', function() {
    counter.innerHTML = count--;
    if (count < 0) {
      counter.classList.add('under')
    }
  })
})()
.over {
  color: green;
}

.under {
  color: red;
}

.zero {
  color: gray;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <link rel="stylesheet" href="counter.css">
</head>

<body>
  <h1>0</h1>
  <button class="decrease">-</button>
  <button class="increase">+</button>
  <script src="counter.js"></script>
</body>

</html>

В результате получается, что я не могу добавить класс 'ноль' в оба условия любым способом. Пытаюсь ли я добавить класс 'ноль' к каждой кнопке, если цвет счетчика остается зеленым или красным независимо от его значения.

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Если это исправить:

(function () {
            const counter = document.querySelector('h1');
            const add = document.querySelector('.increase');
            const substract = document.querySelector('.decrease');
            let count = 0;

            add.addEventListener('click', function () {
                count++;
                counter.innerHTML = count
                if (count > 0) {
                    counter.classList.add('over');
                    counter.classList.remove('under')
                } else if(count === 0) {
                    counter.classList.remove('under')
                    counter.classList.remove('over')
                }
            })


            substract.addEventListener('click', function () {
                count--;
                counter.innerHTML = count
                if (count < 0) {
                    counter.classList.add('under')
                    counter.classList.remove('over')
                } else if(count === 0) {
                    counter.classList.remove('under')
                    counter.classList.remove('over')
                }
            })
        })()
1 голос
/ 04 мая 2020

Вы должны отменить присвоение других css классов, чтобы всегда отображать нужный класс.

(function() {
  const counter = document.querySelector('h1');
  const add = document.querySelector('.increase');
  const substract = document.querySelector('.decrease');
  let count = 0;

  add.addEventListener('click', function() {
    counter.innerHTML = ++count;
    if (count > 0) {
    	counter.classList.remove('under', 'zero')
      counter.classList.add('over')
    }
    else if (count == 0) {
    	counter.classList.remove('under', 'over')
      counter.classList.add('zero')
    }
  })

  substract.addEventListener('click', function() {
    counter.innerHTML = --count;
    if (count < 0) {
    	counter.classList.remove('over', 'zero')
      counter.classList.add('under')
    }
    else if (count == 0) {
    	counter.classList.remove('under', 'over')
      counter.classList.add('zero')
    }
  })
})()
.over {
  color: green;
}

.under {
  color: red;
}

.zero {
  color: gray;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <link rel="stylesheet" href="counter.css">
</head>

<body>
  <h1>0</h1>
  <button class="decrease">-</button>
  <button class="increase">+</button>
  <script src="counter.js"></script>
</body>

</html>

В качестве примечания, я заметил, что при нажатии кнопок «плюс» и «минус» значение также не отображало правильное число. В коде я изменил «count ++» и «count--» на «++ count» и «--count». Это меняет порядок операций. Например, 'count ++' назначает счетчик для html, И ТОГДА увеличивает переменную, но '++ count' увеличивает переменную, И ТОГДА назначает новое значение для html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...