如果我的.js
文件顶部有以下行,当我调用使用clickButton
的函数时,它会说null
?
在HTML
中<input type="text" onkeydown="toggle()" id="txt1" />
<input name="aButton" id="aButton" type="button" value="ButtonVal" />
在JS中
//global variables
var clickButton = document.getElementById("aButton")
var state = false
function toggle()
{
if(!state)
/*here it says clickButton is null but if I put var clickButton =
document.getElementById("aButton") in this scope it works*/
clickButton.disabled = true
else
clickButton.disabled = false
}
null和undefined之间的差异(不是我如何检查)是什么?是否已经声明了null但没有赋值,其中undefined甚至没有被声明?
我的意思是this question说“程序员没有分配任何内容的属性将是未定义的,但为了使属性变为null,必须将null显式赋值给它。”但我可以向你保证,我从来没有明确地将null赋予任何东西。
答案 0 :(得分:2)
这意味着document.getElementById("aButton")
返回null。具有指定ID的元素在dom中不可用,或者您的dom尚未就绪 - 请参阅https://developer.mozilla.org/en-US/docs/DOM/document.getElementById。
对于null vs undefined - 请参阅What is the difference between the mouseover and mouseenter events?
答案 1 :(得分:0)
请确保您的html文件中有这样的标记:
<input name="aButton" id="aButton" type="button" value="ButtonVal" />
确保在DOM准备好后调用该函数。所以,将链接js放在html页面的底部。或者在里面:
if (document.readyState === "complete") { //codehere }
在JavaScript中,undefined
变量是一个从未声明过或从未赋值的变量。我们假设你举例说明var a
,那么a将是undefined
,因为它从未被赋予任何价值。
但如果您再分配a = null
,那么a
现在将为空。在JavaScript中,null是一个对象(如果您不相信我,请在JavaScript控制台中尝试typeof null
),这意味着null
是一个值(实际上甚至undefined
是一个值)。
您可以使用这些运算符来检查未定义的null。例如:
null === null # => true
undefined === undefined # => true
undefined === null # => false
undefined == null # => true
更多? What is the difference between null and undefined in JavaScript?
答案 2 :(得分:-1)
undefined和null确实是两种不同的类型。 null是一个对象,它引用一个已声明但已提供空值但在未声明的变量中未定义且本身不是对象的变量。
我的猜测是你没有等待DOM准备就绪,所以你的clickButton变量试图过早地抓取一个元素并获得null。尝试将它包装在document.ready或window.onload中,以便在DOM完成加载时执行: - )。
window.onload(function() {
var clickButton = document.getElementById("aButton");
});