これは、私が出会ったjQueryとjavascriptの別のトリック変数スコープとajaxの問題だと思います。
オブジェクトがあるとします:
Container = function()
{
//CSS Style Paramaters:
this.width = "";
this.height = "";
this.margin = "";
this.margin_option = "";
this.position = "";
}
そして、xml ファイルからいくつかの xml データを読み取り、それらをこのオブジェクトのメンバーに格納する必要があるこのオブジェクトのメソッドがあります。
Container.prototype.readXML4Container =function()
{
var self = this;
$.get("assest/xml/layout.xml",function(xml)
{
$(xml).find("body").each(function(){
self.width = ($(this).find("width").text());
self.height = ($(this).find("height").text());
self.margin = ($(this).find("margin").text());
//And more code like this.
});
});
}
この関数の後に別の関数を呼び出す必要があり、.css() を使用して CSS データを適用します。
Container.prototype.applyCSS = function()
{
this.readXML4Container();
$("#container").css({
'width':this.width,
'height':this.height,
'position':this.position,
'margin': this.margin
});
}
XML ファイルは次のようになります。
<?xml version="1.0" encoding="utf-8" ?>
<root>
<body>
<margin>0</margin>
<padding>0</padding>
<font-family>Trebuchet MS, sans-serif</font-family>
<color>#666</color>
</body>
<container>
<width>1220px</width>
<height>730px</height>
<margin>0 auto</margin>
<position>relative</position>
<font-size>1.0em</font-size>
<font-color>blue</font-color>
</container>
<Menubar>
<width>660px</width>
<height>58px</height>
<position>absolute</position>
<left>275px</left>
</Menubar>
<Mainsection>
<width>664px</width>
<height>660px</height>
<position>absolute</position>
<position-left>270px</position-left>
<position-top>60px</position-top>
</Mainsection>
</root>
私の問題は、値がメンバー変数に格納されていないようです。そのオブジェクトのインスタンスを作成し、両方の関数を呼び出すと、CSS スタイルが HTML の DOM に適用されることはありません。
ただし、XML ファイルを読み取らず、最初に値を指定するだけで問題なく動作します。したがって、applyCSS の部分が適切であることはわかっています。問題は、読み取りおよび保存段階にあるはずです。
私はこの問題を1日以上解決しようとしています....これについて誰か助けてもらえますか? ありがとうございました!