可能的原因是什么document.getElementById,$("#id")或者任何其他DOM方法/ jQuery选择器没有找到元素?
示例问题包括:
.val(),.html(),.text())返回undefined返回的标准DOM方法null导致以下任何错误:
未捕获的TypeError:无法设置null的属性'...'未捕获的TypeError:无法读取null的属性'...'
最常见的形式是:
未捕获的TypeError:无法设置null的属性'onclick'
未捕获的TypeError:无法读取null的属性"addEventListener"
未捕获的TypeError:无法读取null的属性'style'
我有以下代码,它基本上切换了一堆图像.
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var num = 1;
img = document.getElementsByTagName("img")[0];
hbutton = document.getElementsByTagName("h1")[0];
hbutton.onclick = function() {
num += 1;
img.src = num + ".jpg";
}
</script>
</head>
<body>
<h1>Press Here!</h1>
<img src = "1.jpg"></img>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,当我运行它时,没有任何反应,因为我的Firebug控制台显示以下错误.
hbutton is undefined
---
hbutton.onclick = function() {
Run Code Online (Sandbox Code Playgroud)
当我在页面加载后只运行JS时,它工作得非常好!!! 为什么是这样?
所以我一直在看几个如何用其他图像填充画布的例子,一旦我重新排列代码,他们就会停止工作.我注意到与其他类型的javascript变量相比没有意义的画布上的一些行为,我想知道发生了什么.例如,如果我做这样的事情......
<!DOCTYPE HTML>
<html>
<head>
<script>
var someVar = "This variable has been set";
function aFunction(){
alert(someVar);
};
</script>
</head>
<body onload="aFunction()">
<canvas id="aCanvas" height="100" width="100"></canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
...我得到一个弹出窗口"这个变量已被设置",这是我所期望的,但如果我做这样的事情......
<!DOCTYPE HTML>
<html>
<head>
<script>
var aCanvas = document.getElementById("aCanvas");
var context;
function aFunction(){
try{
context = aCanvas.getContext("2d");
alert("it worked");
}
catch(err){
alert(err);
}
};
</script>
</head>
<body onload="aFunction()">
<canvas id="aCanvas" height="100" width="100"></canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
...我收到一条消息"TypeError:aCanvas is undefined"
然而,如果我尝试在try本身中以相同的方式定义画布......
<!DOCTYPE HTML>
<html>
<head>
<script>
var aCanvas;
var context;
function aFunction(){
try{
aCanvas …Run Code Online (Sandbox Code Playgroud)