JavaScript body.style.background 在 script.js 中无法使用线性渐变,但在控制台中工作正常
JavaScript body.style.background not working with linear-gradient in script.js but works fine in console
body.style.background = 不在 script.js 包含的文件中工作 其他一切都工作兑现的 dom 选择器工作输入 body.style.background = 'red';有效但不在包含的文件中
我试过 console.logs 如下面代码中所述,输出的特殊情况是
如果我从回调中复制日志并将其粘贴到 body.style.background 它可以工作但不在脚本文件中。
color_1 = document.querySelector("#color-1");
color_2 = document.querySelector("#color-2");
body = document.querySelector("body");
function changeBackgroundColor() {
body.style.background = "linear-gradient(to right, "+color_1.value+ ", "+ color_2.value+");";
//************* I am getting the console.logs but the background's not changing
console.log("linear-gradient(to right, " + color_1.value + ", " + color_2.value + ");");
}
//************* Both the listeners work fine and the cashed selectors
color_1.addEventListener("input", changeBackgroundColor);
color_2.addEventListener("input", changeBackgroundColor);
<html>
<head>
<title>Background Color Generator</title>
<!-- Custom Styles -->
<style type="text/css">
body {
background: linear-gradient(to right, red , yellow);
}
</style>
</head>
<body>
<div class="container">
<input id="color-1" type="color">
<input id="color-2" type="color">
</div>
</body>
</html>
当颜色输入改变时背景应该改变颜色但没有任何反应。
为了像这样通过 JavaScript 进行线性渐变,您需要访问 body.style.backgroundImage
属性。然后,您可以传入 linear-gradient
字符串来构建渐变。
function changeBackgroundColor() {
body.style.backgroundImage = "linear-gradient(to right, "+ color_1.value +", "+ color_2.value +")";
还有一个小提示,无论何时传递字符串(在这种情况下或任何时候以这种方式设置 CSS 属性),都不需要提供尾随 ;
CSS 期望的。所以你有这条线:
"linear-gradient(to right, "+ color_1.value +", "+ color_2.value +");";
注意第一个 ;
你在那里。它应该被删除以留下这个字符串:
"linear-gradient(to right, "+ color_1.value +", "+ color_2.value +")";
您可以在 MDN 上找到一些示例:
https://developer.mozilla.org/en-US/docs/Web/CSS/background-image
在 W3School 上:
https://www.w3schools.com/jsref/prop_style_backgroundimage.asp
您非常接近正确答案。您唯一需要做的就是从您的代码中删除您进行渐变更改的 ;
(因此它应该是 color_2.value + ")";
而不是 color_2.value + ");";
.
请注意,您要修改实际 属性。 ;
只是 CSS 中用来区分不同属性的分隔符,在代码中修改它们时不需要它。
下面是一个工作示例。
color_1 = document.querySelector("#color-1");
color_2 = document.querySelector("#color-2");
body = document.querySelector("body");
function changeBackgroundColor() {
body.style.backgroundImage = "linear-gradient(to right, " +color_1.value+ ", "+ color_2.value + ")";
}
//************* Both the listeners work fine and the cashed selectors
color_1.addEventListener("input", changeBackgroundColor);
color_2.addEventListener("input", changeBackgroundColor);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
<head>
<title>Background Color Generator</title>
<!-- Custom Styles -->
<style type="text/css">
body {
height: 100vh;
background: linear-gradient(to right, red , yellow);
}
</style>
</head>
<body>
<div class="container">
<input id="color-1" type="color">
<input id="color-2" type="color">
</div>
<!-- Custom Javascript -->
<script src="script.js"></script>
</body>
</html>
干杯!
body.style.background = 不在 script.js 包含的文件中工作 其他一切都工作兑现的 dom 选择器工作输入 body.style.background = 'red';有效但不在包含的文件中
我试过 console.logs 如下面代码中所述,输出的特殊情况是 如果我从回调中复制日志并将其粘贴到 body.style.background 它可以工作但不在脚本文件中。
color_1 = document.querySelector("#color-1");
color_2 = document.querySelector("#color-2");
body = document.querySelector("body");
function changeBackgroundColor() {
body.style.background = "linear-gradient(to right, "+color_1.value+ ", "+ color_2.value+");";
//************* I am getting the console.logs but the background's not changing
console.log("linear-gradient(to right, " + color_1.value + ", " + color_2.value + ");");
}
//************* Both the listeners work fine and the cashed selectors
color_1.addEventListener("input", changeBackgroundColor);
color_2.addEventListener("input", changeBackgroundColor);
<html>
<head>
<title>Background Color Generator</title>
<!-- Custom Styles -->
<style type="text/css">
body {
background: linear-gradient(to right, red , yellow);
}
</style>
</head>
<body>
<div class="container">
<input id="color-1" type="color">
<input id="color-2" type="color">
</div>
</body>
</html>
当颜色输入改变时背景应该改变颜色但没有任何反应。
为了像这样通过 JavaScript 进行线性渐变,您需要访问 body.style.backgroundImage
属性。然后,您可以传入 linear-gradient
字符串来构建渐变。
function changeBackgroundColor() {
body.style.backgroundImage = "linear-gradient(to right, "+ color_1.value +", "+ color_2.value +")";
还有一个小提示,无论何时传递字符串(在这种情况下或任何时候以这种方式设置 CSS 属性),都不需要提供尾随 ;
CSS 期望的。所以你有这条线:
"linear-gradient(to right, "+ color_1.value +", "+ color_2.value +");";
注意第一个 ;
你在那里。它应该被删除以留下这个字符串:
"linear-gradient(to right, "+ color_1.value +", "+ color_2.value +")";
您可以在 MDN 上找到一些示例:
https://developer.mozilla.org/en-US/docs/Web/CSS/background-image
在 W3School 上:
https://www.w3schools.com/jsref/prop_style_backgroundimage.asp
您非常接近正确答案。您唯一需要做的就是从您的代码中删除您进行渐变更改的 ;
(因此它应该是 color_2.value + ")";
而不是 color_2.value + ");";
.
请注意,您要修改实际 属性。 ;
只是 CSS 中用来区分不同属性的分隔符,在代码中修改它们时不需要它。
下面是一个工作示例。
color_1 = document.querySelector("#color-1");
color_2 = document.querySelector("#color-2");
body = document.querySelector("body");
function changeBackgroundColor() {
body.style.backgroundImage = "linear-gradient(to right, " +color_1.value+ ", "+ color_2.value + ")";
}
//************* Both the listeners work fine and the cashed selectors
color_1.addEventListener("input", changeBackgroundColor);
color_2.addEventListener("input", changeBackgroundColor);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
<head>
<title>Background Color Generator</title>
<!-- Custom Styles -->
<style type="text/css">
body {
height: 100vh;
background: linear-gradient(to right, red , yellow);
}
</style>
</head>
<body>
<div class="container">
<input id="color-1" type="color">
<input id="color-2" type="color">
</div>
<!-- Custom Javascript -->
<script src="script.js"></script>
</body>
</html>
干杯!