Javascript错误Null不是一个对象
Javascript Error Null is not an Object
我在Web检查器中得到错误,如下所示:
TypeError: 'null' is not an object (evaluating 'myButton.onclick = function() {
var userName = myTextfield.value;
greetUser(userName);
return false;
}')
这是我的代码(HTML):
<h2>Hello World!</h2>
<p id="myParagraph">This is an example website</p>
<script src="js/script.js" type="text/javascript"></script>
<form>
<input type="text" id="myTextfield" placeholder="Type your name" />
<input type="submit" id="myButton" value="Go" />
</form>
JS:
var myButton = document.getElementById("myButton");
var myTextfield = document.getElementById("myTextfield");
function greetUser(userName) {
var greeting = "Hello " + userName + "!";
document.getElementsByTagName ("h2")[0].innerHTML = greeting;
}
myButton.onclick = function() {
var userName = myTextfield.value;
greetUser(userName);
return false;
}
知道为什么我得到错误吗?
将代码放在元素定义后执行,可以使用DOM就绪回调,也可以将源代码放在HTML中的元素下面。
如果找不到元素, document.getElementById()
返回null
。属性赋值只能发生在对象上。null
不是一个对象(与typeof
相反)。
任何执行和处理DOM元素的JS代码都应该在创建DOM元素之后执行。JS代码从上到下被解释为在HTML中布局。因此,如果在DOM元素之前有一个标记,则在浏览器解析HTML页面时,脚本标记中的JS代码将执行。
因此,在您的情况下,您可以将DOM交互代码放入函数中,以便只定义函数而不执行。
然后你可以为文档加载添加一个事件监听器来执行这个函数。
它会给你类似的东西:
<script>
function init() {
var myButton = document.getElementById("myButton");
var myTextfield = document.getElementById("myTextfield");
myButton.onclick = function() {
var userName = myTextfield.value;
greetUser(userName);
}
}
function greetUser(userName) {
var greeting = "Hello " + userName + "!";
document.getElementsByTagName ("h2")[0].innerHTML = greeting;
}
document.addEventListener('readystatechange', function() {
if (document.readyState === "complete") {
init();
}
});
</script>
<h2>Hello World!</h2>
<p id="myParagraph">This is an example website</p>
<form>
<input type="text" id="myTextfield" placeholder="Type your name" />
<input type="button" id="myButton" value="Go" />
</form>
Fiddle at - http://jsfiddle.net/poonia/qQMEg/4/
尝试加载javascript。
试试这个:
<h2>Hello World!</h2>
<p id="myParagraph">This is an example website</p>
<form>
<input type="text" id="myTextfield" placeholder="Type your name" />
<input type="submit" id="myButton" value="Go" />
</form>
<script src="js/script.js" type="text/javascript"></script>
我认为这个错误是因为元素是未定义的,所以你需要添加window.onload
事件,这个事件将在加载窗口时定义你的元素。
window.addEventListener('load',Loaded,false);
function Loaded(){
var myButton = document.getElementById("myButton");
var myTextfield = document.getElementById("myTextfield");
function greetUser(userName) {
var greeting = "Hello " + userName + "!";
document.getElementsByTagName ("h2")[0].innerHTML = greeting;
}
myButton.onclick = function() {
var userName = myTextfield.value;
greetUser(userName);
return false;
}
}
我同意alex关于确保DOM被加载的观点。我还认为提交按钮将触发刷新。
这就是我要做的
<html>
<head>
<title>webpage</title>
</head>
<script type="text/javascript">
var myButton;
var myTextfield;
function setup() {
myButton = document.getElementById("myButton");
myTextfield = document.getElementById("myTextfield");
myButton.onclick = function() {
var userName = myTextfield.value;
greetUser(userName);
return false;
}
}
function greetUser(userName) {
var greeting = "Hello " + userName + "!";
document.getElementsByTagName("h2")[0].innerHTML = greeting;
}
</script>
<body onload="setup()">
<h2>Hello World!</h2>
<p id="myParagraph">This is an example website</p>
<form>
<input type="text" id="myTextfield" placeholder="Type your name" />
<input type="button" id="myButton" value="Go" />
</form>
</body>
</html>
玩得开心!
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- 如何计算一个对象中五个属性中有多少是非null的
- Rails JavaScript 包含 TypeError:“null”不是一个对象(评估 'document.
- Null不是一个对象,使下拉
- IE错误'是null或者不是一个对象
- 如何修复TypeError: 'null'不是一个对象(求值'e.parentNode'
- 抛出TypeError错误:null不是一个对象(计算"$("body").append&
- 为什么用null初始化一个对象的属性会提高速度?
- 堆叠条形图谷歌可视化在internet explorer 8 'null或不是一个对象'
- Javascript错误Null不是一个对象
- 在JavaScript中声明一个对象供以后使用- null或{}
- 如何修复:TypeError: 'null'不是一个对象(计算'event.relatedTar