Javascript 错误:未捕获的类型错误:无法读取 null 的属性“addEventListener”
2018-02-08
1232
我正在制作一个 HEX 到 RGB 颜色转换器,我已经完成了我认为你应该做的所有事情,这就是我的 JS 代码和 HTML 代码
HTML
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<title>Colour Converter</title>
</head>
<body>
<center>
<h1>Hex - RGB</h1>
<input id="hex">
<input id="rgb">
<script src="Main.js"></script>
</center>
</body>
</html>
Javascript
var HexInput = document.getElementById("hex");
var RGBInput = document.getElementById("rgb");
HexInput.addEventListener("input",ToHex);
function ToHex() {
console.log("Test")
}
我收到此错误
Uncaught TypeError: Cannot read property 'addEventListener' of null
at Main.js:3
我刚开始学习 JavaScript,我还很新
3个回答
您应该进行一些更改:
首先,您需要在
整个 DOM 已加载
之后运行脚本。如果在 DOM 完全加载之前运行脚本,则
document.getElementById
将无法找到元素并返回 null。
其次,您还需要在
addEventListener
中将
ToHEX()
更改为
ToHEX
。前者立即执行
ToHEX
并且不返回任何内容。后者将
将函数
传递给
addEventListener
。
编辑:
看起来您刚刚更新了您的问题以解决这个问题。
这是更正后的代码:
document.addEventListener("DOMContentLoaded", function(event) {
var HexInput = document.getElementById("hex");
var RGBInput = document.getElementById("rgb");
HexInput.addEventListener("input",ToHEX);
function ToHex() {
console.log("Test")
}
});
最后,您还应该将
<script src="Main.js"></script>
行移回标题中 - 它不需要插入到您的 HTML 之后。在 HTML 之后包含脚本并不意味着它会在页面加载后运行。
Elliot B.
2018-02-08
此代码似乎有效。我修复了代码顺序和拼写错误。
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<title>Colour Converter</title>
</head>
<body>
<center>
<h1>Hex - RGB</h1>
<input id="hex">
<input id="rgb">
<script>
function ToHex() {
console.log("Test");
}
var HexInput = document.getElementById("hex");
var RGBInput = document.getElementById("rgb");
HexInput.addEventListener("input", ToHex);
</script>
</center>
</body>
</html>
qwermike
2018-02-08
感谢 Bassem Rabia 它有效
HTML
<!doctype html>
<html lang="en">
<head></head>
<body>
<input id="hex">
<input id="rgb">
<script src="main.js"></script>
</body>
</html>
JavaScript
document.addEventListener("DOMContentLoaded", function(event){
function toHex(){
console.log("Test");
}
var HexInput = document.getElementById("hex");
var RGBInput = document.getElementById("rgb");
HexInput.addEventListener("input", toHex);
});
Moorad
2018-02-08