2012-05-09 61 views
0

由於某些原因,在下面的代碼中currentRow.cells返回{}。我該如何檢查?如果currentRow.cell返回{},我不想執行行。如何檢查JavaScript中的{}值?

currentRow = document.createElement("TR"); 
if(currentRow.cells.length > 0) { .. do something } 

更新1:

所有我想要的是檢查空對象。如果currentRow.cells是一個空對象,則什麼也不做。

+2

它是一個空對象。問題不明確 – zerkms

+0

你正在做'createElement('tr')'。這不會產生一個新的'',這將是空白的? –

+0

@火箭是如何檢查空物體。有時候它不是空白的。 – azamsharp

回答

1

jQuery有一個名爲$.isEmptyObject()的輔助方法。

他們對這個代碼很簡單:

function isEmptyObject(obj) { 
    for (var name in obj) { 
     return false; 
    } 
    return true; 
} 

如果你不想使用整個jQuery庫,你可以嵌入此方法,並在自己的代碼庫的地方摔了!

+0

問題是'currentRow.cells'不是一個普通的對象,它是['HTMLCollection'](https://developer.mozilla.org/En/DOM/HTMLCollection),所以這是行不通的。 –

+0

我只是回答OP問的問題:「我想要的只是檢查空物體。」 – Jason

+0

「如果currentRow.cells是一個空對象」不幸的是,這將無法檢查currentRow.cells是否爲空對象。它所要做的就是告訴你currentRows.cells是否爲undefined。 –

0

要回答你的問題標題:

function is_empty(obj) { 
    for(var i in obj) { 
     if(obj.hasOwnProperty(i)) 
      return false; 
    } 
    return true; 
} 

alert(is_empty({})); // true 
+0

問題是'currentRow.cells'不是一個普通的對象,它是['HTMLCollection'](https://developer.mozilla.org/En/DOM/HTMLCollection),所以這是行不通的。 –

2

我總是類型的HTMLCollection的對象。

你應該能夠再檢查使用這樣的代碼集合的長度:

if(currentRow.cells.length != 0) { 
    //row and cells exist, work with them 
} 
0

currentRow<tr>(或HTMLTableRowElement),並currentRow.cellsHTMLCollection(不是數組([])或一個對象({}))。

如果currentRow.cells未定義,表示current行不是<tr>,這是另一個元素。

要檢查DOM元素是否爲空,可以使用childNodes(這將是從不undefined)。

if(currentRow.childNodes.length === 0){ 
    // empty 
} 
else{ 
    // not empty 
} 

編輯:更好的是,您可以使用hasChildNodes

if(!currentRow.hasChildNodes()){ 
    // empty 
} 
else{ 
    // not empty 
} 
0

cells財產<tr>在IE8及以下不可用。如上所述,鍛鍊是使用childNodes。以下代碼檢查cells是否未定義:

var currentRow = document.createElement("TR"); 
if (typeof currentRow.cells === "undefined") { 
    // use currentRow.childNodes 
} 
else { 
    // use currentRow.cells 
}