2009-03-03 15 views
21

通常、JavaScriptでスタイル属性を設定する必要がある場合は、次のようにします。Javascriptでstyle.floatを設定するクロスブラウザの方法はありますか?

element.style.attribute = "value"; 

多少のバリエーションがありますが、通常、属性名はcamelcasedですがHTML属性名と似ています。

私の問題は、float属性が機能しないことです。 FloatはJavaScriptのキーワードなので、style.floatはすべてのJavaScriptをページ区切りにします。 MSDNを見て、styleFloatを次のように使います:

element.style.styleFloat = "value"; 

IEでしか動作しません。 Firefox、Safari、Chrome、Opera - いずれも答えがないようです。どこが間違っていますか?これには簡単な答えが必要です。

答えて

35

使用cssFloat ...

element.style.cssFloat = "value"; 

IE 8除くすべてで動作し、古いが、あなたは常にブラウザおよびスイッチを検出、または単にそれらの両方を設定することができます。残念ながら、すべてのブラウザで動作するスタイル値を1つだけ設定する方法はありません。

だから、あなたはフロートを設定する必要が皆をまとめるために、ちょうど言う:

element.style.styleFloat = "value"; 
element.style.cssFloat = "value"; 

どこでも動作する必要があること。

+1

なぜ 'element.style [ 'フロート'] = "値";' ? javascriptオブジェクトで使用できる文字に制限はありません。 – doug65536

+0

MDNリンク:https://developer.mozilla.org/en-US/docs/Web/CSS/float – Basilevs

0

よりよい:

element.style.styleFloat = element.style.cssFloat = "value"; 
+1

質問を解決する方法を拡張することができますか? –

0

これは、関数のスニフアプローチです:

if (typeof elmt.style.cssFloat != "undefined") 
    elmt.style.cssFloat = "none"; 
else 
    elmt.style.styleFloat = "none"; 

しかし、通常、我々は、この検出を気にする必要はありません。私は以下のようにクロームとuser2719099のアプローチをテストした:

 elmt.style.cssFloat = elmt.style.styleFloat = "none"; 
     console.log(elmt.style.cssFloat, elmt.style.styleFloat); 

、結果はコンソールではかなり良いです:

none none 
関連する問題