1

styleDOM 要素のプロパティを変更したい。これがその仕組みです:

var el = document.getElementById("kaka");
    el.style.top = "10px";
    el.style.left = "20px";

しかし、設定する属性がたくさんあり、それらは次のObjectように保存されます。

var style_obj = {
    top: "10px",
    left: "20px",
    backgroundColor: "#009966"
}

だから私はstyleこのように割り当てたい:

el.style = style_obj;

しかし、この方法では機能せず、この方法でも:

el.currentStyle = style_obj;

そして、この方法でも機能していません:

var style_str = JSON.stringify( style_obj ).replace(/{/g,"").replace(/}/g,"");

el.style.cssText = style_str;

styleでは、との何が問題なのcurrentStyleですか? スタイルオブジェクトをループせずにどうすればいいですfor eachか??

4

2 に答える 2

1

そのようなスタイル オブジェクトを割り当てることはできません。スタイル オブジェクトの型はCSSStyleDeclarationです。それへの割り当ては黙って失敗します。のように、個々のプロパティを設定および取得できますelt.style.color。修飾子の存在など、より詳細な情報については、 のように!importantその API を使用できますelt.style.getPropertyPriority('color')。ただし、私の知る限り、CSSStyleDeclarationオブジェクトを自分で作成する方法はありません。

_.extendもちろん、Underscore.js などのお気に入りのライブラリの関数を のように使用することもできます_.extend(el.style,style_obj)。これは、プロパティを 1 つずつコピーするのと本質的に同じです。

.cssText問題の要素にプロパティを設定することもできます。

スタイル オブジェクトを割り当てることによって、同時にすべての既存のプロパティを削除しようとしていた場合は、それを個別に行う必要があります。null 文字列に設定cssTextするとうまくいくはずです。

style念のため、head に要素を追加してこれを行わないでください。

于 2013-08-13T12:17:05.470 に答える