这是我的代码:
<body>
<p id="x"></p>
<p id="y"></p>
<form action="2.php" method="post" name="frm">
<input type="text" name="srch">
</form>
<script>
obj = document.forms["frm"]["srch7"];
obj1 = document.getElementById("noexist");
document.getElementById("x").innerHTML = obj;
document.getElementById("y").innerHTML = obj1;
</script>
</body>
为什么obj返回undefined但是obj1返回null,document.forms [&#34; frm&#34;] [&#34; srch7&#34;];和document.getElementById(&#34; noexist&#34;);两者都是对象,必须返回null,因为元素不存在。
答案 0 :(得分:3)
两种情况都不同,
obj = document.forms["frm"]["srch7"];
//Here you are trying to access a property that
// is not present under document.forms.frm.
obj1 = document.getElementById("noexist");
//Here it is returning null because getElementById implemented in that way.
// getElementById will return null if the DOM search didn't find any element
// based on the supplied id.
答案 1 :(得分:2)
因为存在标识为frm
的表单,并且其属性srch7
未定义,所以表示未定义。但是当你试图通过id noexist
获取元素时,该元素为null,或者它不存在。
答案 2 :(得分:1)
因为,在这里你试图从dom中获取对象/元素,如果它没有找到对象/元素,它返回对象的空默认值,即null
obj1 = document.getElementById("noexist");
在这里,您试图获取字段(不是对象)的值,如果找不到分配给该字段或变量的任何值,则返回undefined
。
undefined
表示已声明变量但尚未赋值
obj = document.forms["frm"]["srch7"];
请参阅此帖子What is the difference between null and undefined in JavaScript?
答案 3 :(得分:0)
obj = document.forms["frm"]["srch7"];
obj1 = document.getElementById("noexist");
obj
document.forms["frm"]
为null
,因此任何null
对象的属性为undefined.
obj1
,document.getElementById("noexist");
的值为空。