Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   цвет из массива (https://javascript.ru/forum/misc/72521-cvet-iz-massiva.html)

abcde 04.02.2018 15:39

цвет из массива
 
нужно при каждом клике по очереди взять цвет из массива , но при клике берется только последний цвет
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>HTML5</title>
</head>
<body>
<div>
<script>

function col(colors){
var colors = ["red" , "green", "blue"];
for (var i = 0; i < colors.length; i++) {
var a = document.getElementById("h");
a.style.color = colors[i];

}
}
</script>
</div>
<p id="h"> hello</p>
<input type="button" onclick="col()" value="click">
</body>
</html>

KonstBessonov 04.02.2018 16:01

Ну конечно. При одном запуске присваиваются все три цвета по очереди, при выходе из цикла всегда остается синий. Тут не цикл нужен, а переменная, которая хранит текущий цвет.

Типа так http://plnkr.co/edit/nr53yEX5N0L5OBJYifgR?p=preview

abcde 04.02.2018 16:07

понятно спасибо за помощь

Viktor Shcherbyna 28.06.2019 12:46

Цитата:

Сообщение от KonstBessonov (Сообщение 476991)
Ну конечно. При одном запуске присваиваются все три цвета по очереди, при выходе из цикла всегда остается синий. Тут не цикл нужен, а переменная, которая хранит текущий цвет.

Типа так http://plnkr.co/edit/nr53yEX5N0L5OBJYifgR?p=preview

А можно ли применить это к div ? Что бы стартовым цветом, был первый цвет из массива, а при нажатии кнопки менялся цвет фона блока на следующий.

рони 28.06.2019 14:15

Viktor Shcherbyna,
http://javascript.ru/forum/misc/7735...os-po-dom.html

Stownheidg 29.06.2019 04:14

<div></div>
<button id="change">Change color</button>

div{
  width: 50px;
  height: 50px;
  background: red;
  margin-bottom: 10px;
}

const colors = ['red', 'green', 'blue'],
div = document.querySelector('div');
let i = 0;
change.onclick = () => div.style.background = colors[++i % colors.length];


Часовой пояс GMT +3, время: 21:12.