2010-12-09 64 views
5

有没有办法检查一个对象是否存在?我不断收到“需要对象”的错误。我知道这个对象不存在,我想绕过我的代码的一部分,如果是这样的话。我不知道我还没有尝试过什么......如何设置“if object exists”的条件?

var codeName = document.getElementById('testCode'); 
    //I have tried 
    if(codeName != null) 
    if(codeName.length != 0) 
    if(typeOf codeName != 'undefined') 
    if(!codeName) 
    if(codeName.value != null) 

有没有什么方法可以查看对象是否存在?

+1

假设这是JavaScript代码,我没有看到C#或ASP.NET MVC是如何相关的......它只是在页面中运行的脚本,对吧? – 2010-12-09 14:32:40

+1

我们可以看到您的标记,看看您的元素与这些ID实际存在吗? – 2010-12-09 14:38:46

+0

`if(typeOf(codeName)=='object'){}`? – Konerak 2010-12-09 14:48:03

回答

3

getElementById电话后,codeName或者是一个DOM元素或空。您可以使用警报,看看其中:

alert(codeName); 

所以if (codename != null)应该工作。

错误发生在它到达那里之前吗?我会尝试添加警报来查看代码运行时的值。或者在调试器中执行此代码。

-2

也许尝试检查您的对象从您的功能需要的类型继承?就像这样:

if(codeName is String)

-1

我不知道什么是document,但你可以尝试像

if(document.getElementById('code'+[i]) == null) 
{ 
//...do Something 
} 

所以测试,如果使用它之前存在...

-1

我不做很多的JS编码,但似乎你的[我]是问题。据我所知,[]用于访问一个数组的字段,并且你没有数组。只需使用“代码”+我

-1

红宝石nil相当于false

所以尽量只检查:

if codeName

-1
<div id='code1'></div> 

var itemCount = 10; 
var len = 10; 
len = itemCount; 
for (var i=0;i<len; i++) { 
    var codeName = document.getElementById('code'+ i); 
    if(codeName == null) 
     alert("Nope " + i); 
    else 
     alert("Yep " + i); 
} 
-1

会为你一个try/catch工作? Example

function toDoStuff(elem) { 
    codeName = document.getElementById(elem); 
    if (!codeName) throw "Object isn't here yet!" 
} 


for (var i = 0; i < 5; i++) { 
    try { 
     toDoStuff('someElem'); 
    } catch (err) { 
     if (err == "Object isn't here yet!") { 
      alert("Object isn't ready yet leaving loop!"); 
      break; 
     } 
    } 
} 
2

尝试:

var codeName = document.getElementById(code[i]) || null; 
if (codeName) {/* action when codeName != null */} 
如果你想确保代号

是一个对象:

if (codeName && codeName instanceof Object) { 
    /* action when codeName != null and Object */ 
} 
0
var codeList = document.getElementById('codeList'); 
if(!codeList && !codeList.value && !codeList.value.length) return; 
var code = codeList.value.split(","), 
    itemCount = code.length; 
if(!itemCount) return; 
for (var i=0, i<itemCount; i++) { 
    var codeName = document.getElementById(code[i]); 
    if(!codename || !codename.length) continue; 
    //do something here... 
} 

我来到这里工作的例子:http://jsbin.com/uduxe4/15