#javascript #html #css #random
#javascript #HTML #css #Случайный
Вопрос:
const btn = document.getElementById('btn');
btn.addEventListener('click', () => {
document.body.style.backgroundColor = changeC()
});
var x = Math.floor(Math.random() *256);
y = Math.floor(Math.random() * 256);
z = Math.floor(Math.random() * 256);
function changeC() {
return "rgb(" x "," y "," z ")";
};
Первый щелчок изменяет цвет фона.
Последовательные нажатия этого не делают.
Как изменить код, чтобы последовательные нажатия также меняли цвет фона случайным образом?
Комментарии:
1. поместите x y z в функцию
2. Обратите внимание, что
y
иz
не являются частьюvar
, потомуvar
что заканчиваются точкой с запятой (;
) . Либо добавьтеvar
передy
иz
, либо замените точку с запятой послеx
иy
на запятую (,
).
Ответ №1:
Ваши x
y
z
переменные и были назначены только один раз при запуске программы, потому что они находились в области верхнего уровня. Чтобы переназначать их каждый раз, переместите их в функцию, как показано.
const btn = document.getElementById('btn');
btn.addEventListener('click', () => {
document.body.style.backgroundColor = changeC()
});
function changeC() {
var x = Math.floor(Math.random() *256),
y = Math.floor(Math.random() * 256),
z = Math.floor(Math.random() * 256);
return "rgb(" x "," y "," z ")";
};
Комментарии:
1. @iAmOren указал, что ваши
y
иz
не были частьюvar
инструкции. Я исправил это в своем ответе, используя,
вместо;
. Раньше это работало бы, ноy
иz
были бы глобальными переменными, а не локальными дляchangeC
функции.
Ответ №2:
запустите этот код
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<button id="btn">change color</button>
<script>
const btn = document.getElementById('btn');
btn.addEventListener('click', () => {
document.body.style.backgroundColor = changeC()
});
function changeC() {
var x = Math.floor(Math.random() * 256);
y = Math.floor(Math.random() * 256);
z = Math.floor(Math.random() * 256);
return "rgb(" x "," y "," z ")";
};
</script>
</body>
</html>
Ответ №3:
обновите свою функцию так же, как показано ниже:
function changeC() {
x = Math.floor(Math.random() *256);
y = Math.floor(Math.random() * 256);
z = Math.floor(Math.random() * 256);
return "rgb(" x "," y "," z ")";
};
Ответ №4:
const btn = document.getElementById('btn');
btn.addEventListener('click', () => {
document.body.style.backgroundColor = changeC()
});
function changeC() {
// x, y and z have to be in the scope of the function so they refresh every time you call the function
var x = Math.floor(Math.random() *256), // This is , not ;
y = Math.floor(Math.random() * 256), // This is , not ;
z = Math.floor(Math.random() * 256);
return "rgb(" x "," y "," z ")";
};
body {width: 100vw, height: 100vh}
<h1>This works</h1>
<button id="btn"> PRESS ME </button>
Ответ №5:
Попробуйте это:
$('#btn').on('click', function() {
var randomColor = '#' Math.floor(Math.random() * 16777215).toString(16);
document.body.style.backgroundColor = randomColor;
});
@import 'https://fonts.googleapis.com/css2?family=Open Sansamp;display=swap';
html, body {
width: 100%;
height: 100%;
max-width: 100%;
max-height: 100%;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
button {
background: -moz-linear-gradient(top, white 0%, #e5e5e5 100%);
background: -webkit-linear-gradient(top, white 0%, #e5e5e5 100%);
background: linear-gradient(to bottom, white 0%, #e5e5e5 100%);
border: 1px solid #aaa;
cursor: pointer;
font-family: 'Open Sans', sans-serif;
padding: 5px;
}
button:hover {
border-color: #888;
}
<button id="btn">
Click me
</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>