在对象中为null和undefined

时间:2016-05-05 09:23:33

标签: javascript null undefined

这是我的代码:

<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,因为元素不存在。

4 个答案:

答案 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.
  • 对于obj1document.getElementById("noexist");的值为空。
  • 所以这些是这两个对象之间的区别。