2012-03-24 55 views
-1

这里是我的代码:如何检查一个字段是否已被声明?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title> 
     JS Test 
    </title> 
     <script type="text/javascript" src="jquery-1.4.2.min.js"></script> 
     <script type="text/javascript"> 
     if(someObj != null || typeof someObj != 'undefined') 
     { 
      alert("Success."); 
     } 
     else 
     { 
      alert("Failed."); 
     } 
    </script> 
</head> 
<body> 

为什么它总是返回一个错误MESSAGE- “someObj中没有定义” 给我? 我想把代码放在页面的脚下来检查someObj是否已被声明。

+0

为什么你认为 “someObj中” 应该*不*为空?它没有被定义,毕竟... – Pointy 2012-03-24 03:08:15

+0

另外你为什么使用已弃用的文档类型?该HTML无效HTML5,但不是XHTML – tkone 2012-03-24 03:21:44

回答

2

做它周围的其他方法:

if(typeof someObj != 'undefined' && someObj != null) 
    { 
     alert("Success."); 
    } 
    else 
    { 
     alert("Failed."); 
    } 

也就是说,不要试图实际使用someObj直到确信与typeof证实,它已被定义之后。

事实上,如果没有定义的变量,当你与someObj != null启动if条件你会得到“没有定义someObj中”的错误,因为 - 好,它定义。

如果您首先使用typeof进行测试,那么它将不会执行null比较,除非它实际上已被定义。

+0

我按照您的说法完成了操作,但它仍将错误返回给我。你有没有试过这个代码? – 2012-03-24 05:55:19

+0

幸运的是,我尝试更改代码为“typeof window.someObj!= null”,它将运行并返回“Faild”。对我来说。你能解释一下吗? – 2012-03-24 05:58:48

+0

正如在我的答案为我工作,并返回“失败”,因为someObj'尚未定义。 'typeof'运算符返回一个字符串,所以直接比较'null'并不是正确的使用方法。 – nnnnnn 2012-03-24 07:06:49

0

正确测试为一个全局变量的存在的方法是这样的:

if (typeof window.someObj != "undefined" && window.someObj != null) { 
    alert("success"); 
} 

但是,你知不知道有没有自己的自定义的javascript,可能这段代码之前定义someObj所以这个测试永远不会找到这个变量。

0

如果你的对象是一个jQuery对象使用

var myObj=$('#myObj'); if (myObj.length) { alert("Success"); } else { alert("NOt found"); }

相关问题