используя цикл for пройти все елементы

320
30 января 2017, 19:23

при каждом клике добавлять елементу красный цвет, когда все елементы будут красного цвета, то по одному клику с конца возвращать елеметам черный цвет, как это можно сделать? html:

<ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <button id="btn">click</button>

JS:

function ready() {
    var i = 0;
    document.getElementById("btn").onclick = function() {
        var list = document.getElementsByTagName("li");
        for (i; i < list.length;) {
            list[i].style.color = "red";
            i++;
            return;
        }
    };
};
document.addEventListener("DOMContentLoaded", ready);
Answer 1

Условиями и проверкой стилей:

var list = document.querySelector('ul'), 
    item = list.querySelectorAll('li'); 
 
document.querySelector('button').onclick = function() { 
  var itemRed = list.querySelectorAll('li[style*="color: red"]'); 
  // Проверяем, все ли элементы крассные (количество красных li и всего сколько li) 
  if(itemRed.length == item.length){ 
    //Если да, то удаляем color у элемента 
    for(var i = 0; i < item.length; i++){ 
      item[i].style.color = ''; 
    }; 
  }else{ 
    // Если нет, то красим следующий элемент в красный (itemRed.length использщуем, как индекс следующего) 
    item[itemRed.length].style.color = 'red'; 
  }; 
};
<ul> 
  <li>1</li> 
  <li>2</li> 
  <li>3</li> 
  <li>4</li> 
  <li>5</li> 
</ul> 
<button id="btn">click</button>

UPDATA:

var list = document.querySelector('ul'), 
    item = list.querySelectorAll('li'); 
 
list.status = false; // Присваиваем свойство 
document.querySelector('button').onclick = function() { 
  var itemRed = list.querySelectorAll('li[style*="color: red"]'); 
  // Проверяем, все ли элементы крассные (количество красных li и всего сколько li) или проверяем статус списка 
  if(itemRed.length == item.length || list.status == true){ 
    //Если да, то удаляем color у последнего элемента 
    item[itemRed.length - 1].style.color = ''; 
     
    // Проверяем, закончились ли красные 
    if(itemRed.length == 1){ 
      list.status = false; // Если да, то меняем статус 
    }else{ 
      list.status = true; // Если нет, то снова назначаем true 
    }; 
  }else{ 
    // Если нет, то красим следующий элемент в красный (itemRed.length использщуем, как индекс следующего) 
    item[itemRed.length].style.color = 'red'; 
  }; 
};
<ul> 
  <li>1</li> 
  <li>2</li> 
  <li>3</li> 
  <li>4</li> 
  <li>5</li> 
</ul> 
<button id="btn">click</button>

READ ALSO
SASS\SCSS: селекторы разделенные запятой

SASS\SCSS: селекторы разделенные запятой

Есть подобный код на CSS

364
Цепочка вызовов

Цепочка вызовов

ЗдравствуйтеНа данный момент я нахожусь на начальном этапе изучения C++, поэтому хотел бы задать вопрос более опытным

318
Как считать данные с консоли?

Как считать данные с консоли?

Например, я пишу 'std::cout << 5'Как мне потом это значение считать с консоли? Upd: не самому вводить, а считать то, что уже вывело

363