2012-05-09 12 views
0

以下のコードで何らかの理由でcurrentRow.cellsが{}を返します。それをどうやって確認できますか? currentRow.cellsが{}を返す場合、私は行を実行したくありません。JavaScriptの{}値をチェックする方法は?

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

UPDATE 1:

私が欲しいのは、空のオブジェクトをチェックすることです。 currentRow.cellsが空のオブジェクトの場合は何もしないでください。

+2

空のオブジェクトです。そして、質問は明確ではありません – zerkms

+0

あなたは 'createElement( 'tr')'をやっています。これは新しい ''を作成しません。これは空白になりますか? –

+0

@Rocketはい空のオブジェクトをチェックする方法はありますか?それが空でない時があります。 – azamsharp

答えて

1

jQueryには$.isEmptyObject()というヘルパーメソッドがあります。このため

彼らのコードは単純です:あなたは全体のjQueryライブラリを使用したくない場合は、この方法を暗礁や独自のコードベースのどこかにそれをドロップすることができます

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

!私は常に型HTMLCollectionのオブジェクトを取得

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)なので、これは動作しません。 –

+0

私は、OPが尋ねた質問に答えているだけです。「空のオブジェクトをチェックするだけです」 – Jason

+0

"currentRow.cellsが空のオブジェクトである場合"残念ながら、 'currentRow.cells'が空のオブジェクトであるかどうかを確認することはできません。 'currentRows.cells'が' undefined'かどうかを伝えるだけです。 –

0

あなたは、このようなコードを使用してコレクションの長さをチェックすることができるはずです。

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

問題currentRow.cells'はプレーンオブジェクトではありません、それは[ 'HTMLCollection'](https://developer.mozilla.org/En/DOM/HTMLCollection)ですので、これは動作しません'です。 –

2

:タイトルにあなたの質問に答えるために

0

currentRow<tr>(またはHTMLTableRowElement)で、currentRow.cellsHTMLCollection(ないアレイ([])でありますオブジェクト({}))。

currentRow.cellsが未定義の場合は、current行が<tr>ではないことを意味します。これは別の要素です。

DOM要素が空であるかどうかを確認するには、(これはundefinedになることはありませんchildNodesを使用することができます。

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

編集:まだ、hasChildNodesを使用できます。

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

cellsプロパティは以下IE8との<tr>では使用できません。運動は上記のようにchildNodesを使用することです。次のコードでは、cellsが未定義であるかどうかを確認します。

var currentRow = document.createElement("TR"); 
if (typeof currentRow.cells === "undefined") { 
    // use currentRow.childNodes 
} 
else { 
    // use currentRow.cells 
} 
関連する問題