web-dev-qa-db-ja.com

IEでオブジェクトのマージンを設定するにはどうすればよいですか?

JavaScriptからオブジェクトのマージンを設定しようとしています。 Opera&Firefox)で実行できますが、コードはInternet Explorerでは機能しません。

ここに私が持っているJavaScriptがあります:

function SetTopMargin (ObjectID, Value)
{
    document.getElementById(ObjectID).style.marginTop =  Value.toString() + "px";
}

そしてそれはこのように呼ばれます:

SetTopMargin("test_div_id", 100);

では、Internet Explorerで機能するコードを知っている人はいますか?

26
Cheetah

[2016年に更新]現在のすべてのブラウザー(IE8 +を含む)では、コード

document.getElementById(ObjectId).style.marginTop = Value.ToString() + 'px';

正常に動作します。

非常に古いIE(<8)バージョンでは、代わりにこの非標準の仕掛けを使用する必要があります:

document.getElementById(ObjectId).style.setAttribute(
   'marginTop', Value.ToString() + 'px');

[〜#〜] edit [〜#〜]-OPによって削除されたコメントから:

現在のIEではstyle.setAttribute( 'margin-top'、..)を使用できますが、8以前では、style.setAttribute( 'marginTop'、..)が必要です。

34
phihag

あなたのコードはIE8で動作します。

<html>
  <head>
    <script type="text/javascript"> 
    function SetTopMargin (ObjectID, Value)
    {   
      document.getElementById(ObjectID).style.marginTop =  Value.toString() + "px";
    }
    </script>
 </head>
 <body>
   <button id="btnTest" onclick="SetTopMargin('btnTest', 100);">Test</button>
 </body>
</html>

IE6では、非常に短い一時停止後も同様に機能しているようです。

4
JamesEggers