2

これは十分に単純なはずですが、オブジェクトのプロパティを別のオブジェクトにコピーするのに問題があります。

var tableFormatting = {
    table: {
        style: {
            width: "100px",
            height: "100px"
        },
        border: "1px"
    }
    //similar code for tbody, tr, td  
};
var table = document.createElement('table');
for (var p in tableFormatting.table)
table[p] = tableFormatting.table[p];
alert(table.style.width); //shows nothing. can't access it  
alert(typeof(table.style.width)); //shows string, so i know it was copied or has a reference
alert(table.border); //shows 1px. this one is copied and accessible 

スタイル プロパティが表示されないのはなぜですか?

4

1 に答える 1

3

それらをディープコピーする必要があります

function copyValues( dst, src ) {
    for( var key in src ) {
        var value = src[key];
        if( typeof value == "object" ) {
            copyValues( dst[key], value );
        }
        else {
            dst[key] = value;
        }
    }
}

copyValues( table, tableFormatting.table );

http://jsfiddle.net/RpJKH/を参照

それ以外の場合、何が起こっているかは手動で次のようになります。

 table.style = obj.style

もちろん、これ.styleは読み取り専用であるため、何もしません。

于 2012-12-20T20:24:25.523 に答える