2010-12-09 59 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