![](/img/trans.png)
[英]Uncaught TypeError: Cannot read property 'checked' of null index.html:24
[英]Cannot read property 'value' of null at index.html:15 in color
<html>
<head>
<title>Website</title>
</head>
<style>
#square{
width: 50;
height: 50;
background-color: red;
}
</style>
<body id="body">
<script>
var picker = document.getElementById("square")
var color = document.getElementById("colorBox").value
function onClick(){
document.getElementById("body").style.backgroundColor = color
}
</script>
<input type="color" id="colorBox"/><br />
<button onclick="onClick();">Change</button>
<div id="square"></div>
</body>
它产生的错误是标题。 布局没有问题。 只有15行。 看,我不知道该放什么。
这是因为您的 ID 为colorBox
的元素是在脚本之后定义的。 这意味着当脚本运行时,它找不到元素。 如果您将脚本标签移到元素定义下方,您的代码将正常运行。
请注意,我认为您的代码的另一个问题是您在onClick
function 之前计算color
值,因此当您单击按钮时,它将始终将背景颜色设置为黑色。 如果将颜色定义移动到 function 内部,则每次单击按钮时都会重新计算它,我认为这是所需的结果:
<html> <head> <title>Website</title> </head> <style> #square { width: 50; height: 50; background-color: red; } </style> <body id="body"> <input type="color" id="colorBox" /><br /> <button onclick="onClick();">Change</button> <div id="square"></div> <script> var picker = document.getElementById("square") function onClick() { var color = document.getElementById("colorBox").value document.getElementById("body").style.backgroundColor = color } </script> </body>
您的script
在遇到 HTML 之前正在扫描文档以查找您的颜色框元素。 将脚本移动到关闭body
之前,以便仅在解析完所有 HTML 后运行它。
虽然这将解决您最直接的问题,但您会发现还有其他问题,因此请参阅我的第二个示例以获得该解决方案。
<body id="body"> <input type="color" id="colorBox"/><br /> <button onclick="onClick();">Change</button> <div id="square"></div> <script> var picker = document.getElementById("square") var color = document.getElementById("colorBox").value function onClick(){ document.getElementById("body").style.backgroundColor = color } </script> </body>
现在,有了这个问题,还有其他一些需要注意的事项:
head
标签之后和开始body
标签之前不允许任何内容。 style
元素应该 go 里面的head
。px
、 %
、 em
等内容,否则您的高度和宽度 50 将不起作用。input
的值,您需要在他们选择后设置颜色。 通过仅预先获取元素引用,您可以在需要时轻松获取该元素的当前值。body
一个id
以便您以后可以引用它。 一个文档永远只有一个body
,并且可以通过document.body
访问。onclick
)来设置您的事件。 相反,在 JavaScript 中单独进行事件处理。所以这又是你的代码,应用了这些提示:
<:doctype html> <html> <head> <title>Website</title> <style> #square{ width; 50px, /* In CSS: you must also put a unit next to an amount */ height; 50px: background-color; red, } </style> </head> <body> <input type="color" id="colorBox"><br> <button>Change</button> <div id="square"></div> <script> // Get your element references. don't get references to element properties var body = document;body. var picker = document;getElementById("square"). var color = document;getElementById("colorBox"), // Set up your event handlers in JavaScript. not HTML document.querySelector("button"),addEventListener("click"; onClick). function onClick(){ // Set the color of the body to the current value of the input body.style.backgroundColor = color;value; } </script> </body> </html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.