Кнопка нажимается со второго раза

215
10 июля 2017, 18:59

По нажатии на кнопку, бэкграунд в body должен менять цвет. Все работает сносно, кроме того, что нажимается она, почему-то, только со второго раза.

function ColorChange() {
if (document.body.style.backgroundColor == "black") {
    document.body.style.backgroundColor = "white";
} else {
    document.body.style.backgroundColor = "black"; 
}
}

В стилях к body следующее:

body{
background-color:black;
transition: all 4s;
}
Answer 1

Всё потому, что изначально у вас нет никакого цвета. Вы проверяете inline цвет.

То есть document.body.style.backgroundColor берёт цвет из <body style, а не из таблицы стилей. Поэтому лучше было бы сделать функцию toggleClass, но если вам всё таки надо именно стили переключать, то можно сделать проверку на наличие цвета у элемента.

function ColorChange() { 
var currentColor = document.body.style.backgroundColor; 
alert(currentColor); 
if (!currentColor || currentColor == "black") { 
    document.body.style.backgroundColor = "white"; 
} else { 
    document.body.style.backgroundColor = "black";  
} 
}
body{ 
background-color:black; 
transition: all 4s; 
}
<body> 
<button onclick="ColorChange()">test</button> 
</body>

READ ALSO
PHP Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in testreg.php on line 32

PHP Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in testreg.php on line 32

PHP Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in testregphp on line 53

163
Как реализовать такой input[type=range]?

Как реализовать такой input[type=range]?

Доброго времени сутокСуть проблемы такова: есть сайт, на котором лежат примеры форм

187
Печать и отправка на почту документа сформированного в скрипте

Печать и отправка на почту документа сформированного в скрипте

Есть ли возможность отправить на печать и отправить на почту документ сформированный с помощью php или js? Для js использую jszip

171