1

http://jsfiddle.net/Xs9e2/には、ONEとTWOという名前の2つの要素があります。要素ONEは、JavaScriptを使用してDOM要素のstyleプロパティに割り当てることによって配置されます。要素TWOは、CSSを使用して配置されます。

HTMLは期待どおりにレンダリングされます。

2つの要素のそれぞれのプロパティleftとアラートを表示するために押すことができるボタンがあります。topJavaScriptで設定されたプロパティのみが表示され、CSSで設定されたプロパティは表示されません。

これの正確な理由は何ですか? JavaScriptを介してCSSプロパティを読み取ることができるべきではありませんか?何かを間違って指定した可能性があります。私は「オフセット」プロパティについて知っており、JQueryについても知っています。この昔ながらのDOM操作が期待どおりに機能しない理由に戸惑っています。私は何が欠けていますか?

4

2 に答える 2

4

style属性は、まあ、属性です。つまり、HTML 要素の属性で指定された値にのみアクセスできますstyle

3.2.3.8 スタイル属性

IDL 属性は、属性で指定された宣言を表す値を持つ をstyle返す必要があります。CSSStyleDeclaration(属性が存在しない場合、オブジェクトは空の宣言を表します。)CSSStyleDeclarationオブジェクトを変更するには、要素に style 属性を作成し (まだ存在しない場合)、その値をシリアル化された形式を表す値に変更する必要があります。CSSStyleDeclaration物体。毎回同じオブジェクトを返す必要があります。

CSS で指定されたスタイルは要素の属性を設定しないため、 でアクセスすることはできません.style

ただし、getComputedStyleを使用できます。

于 2012-11-30T06:11:08.197 に答える
1

インラインスタイルのみを反映するのではなく、IE9 +でサポートcurrentStyleされているすべてのスタイルまたはより優れた標準のスタイル(指摘されている) getComputedStyleを持つIE固有のものを使用できます。style

alert("one at " 
    + JSON.stringify([getComputedStyle(one).left,getComputedStyle(one).top])
    + "two at "
    + JSON.stringify([getComputedStyle(two).left,getComputedStyle(two).top]));
于 2012-11-30T06:10:56.760 に答える