0

以下のコードでは、何らかの理由で currentRow.cells が {} を返します。どうすればそれを確認できますか?currentRow.cells が {} を返す場合、行を実行したくありません。

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

更新 1:

私が望むのは、空のオブジェクトをチェックすることだけです。currentRow.cells が空のオブジェクトの場合は何もしません。

4

5 に答える 5

2

私は常に HTMLCollection 型のオブジェクトを取得します。

次のようなコードを使用して、コレクションの長さを確認できるはずです。

if(currentRow.cells.length != 0) {
    //row and cells exist, work with them
}
于 2012-05-09T22:03:28.497 に答える
1

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

このためのコードは単純です。

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

jQuery ライブラリ全体を使用したくない場合は、このメソッドを引っ掛けて、独自のコード ベースのどこかにドロップできます。

于 2012-05-09T22:01:03.293 に答える
0

cellsプロパティは<tr>IE8 以下では使用できません。childNodesワークアウトは、上記で提案したように使用することです。cells次のコードは、が未定義かどうかをチェックします。

var currentRow = document.createElement("TR");
if (typeof currentRow.cells === "undefined") {
    // use currentRow.childNodes
}
else {
    // use currentRow.cells
}
于 2012-05-10T03:29:34.987 に答える
0

currentRow<tr>(またはHTMLTableRowElement) であり、かつ(currentRow.cells配列HTMLCollection( []) またはオブジェクト ( {}) ではない) です。

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

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

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

編集:さらに良いことに、使用できますhasChildNodes

if(!currentRow.hasChildNodes()){
    // empty
}
else{
    // not empty
}
于 2012-05-09T22:11:39.517 に答える
0

タイトルの質問に答えるには:

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

alert(is_empty({})); // true
于 2012-05-09T22:01:21.233 に答える