• ベストアンサー

FIREFOXでのpostop

現在、画像をブラウザ下から上へ移動する制御をJavaScriptにて行っております。 その際、IEでは正常に動作したのですが、FIREFOXで検証した所動作しませんでした。 原因はIEで使用した"posTop"がFIREFOXで使用できたなららしいです。 --------------------------------------------------------------- <script language=javascript> window.onload=move1; var TimeSet1 = 60; var step1 = 65; var stepcnt =0; var pos_data =0; var obj; function move1(){ stepcnt = 0; for (i = 1; i <= 5; i = i +1){ obj = document.getElementById('GridImg'+String(i)); pos_data = obj.style.posTop; pos_data = pos_data - 2; if(pos_data <= 100){ pos_data = 800; } obj.style.posTop = pos_data; } timerID1=setTimeout('move1()',TimeSet1); } </script> -------------------------------------------------------------- 上記を最小減の変更で修正したと思っております。 ご教授宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • MAN_MA_RUI
  • ベストアンサー率41% (426/1024)
回答No.5

Firefoxが正しいスペル。 http://www.mozilla-japan.org/support/firefox/faq#spell-abbreviate > "posTop"がFIREFOXで使用できたなららしいです。 よく分からないけど式をエラーコンソールに放り込んだらこうなりました。参考になるのかな?コレ。 function move1() { stepcnt = 0; for (i = 1; i <= 5; i = i + 1) { obj = document.getElementById("GridImg" + String(i)); pos_data = obj.style.posTop; pos_data = pos_data - 2; if (pos_data <= 100) { pos_data = 800; } obj.style.posTop = pos_data; } timerID1 = setTimeout("move1()", TimeSet1); }

その他の回答 (4)

noname#30818
noname#30818
回答No.4

function move1(){ stepcnt = 0; for (i = 1; i <= 5; i = i +1){ obj = document.getElementById('GridImg'+String(i)); pos_data = obj.style.top;//<--ここが単位付きの値が返る(文字列)。 pos_data = pos_data - 2;//<--文字列の引き算(計算できているかな?) if(pos_data <= 100){ pos_data = 800; } obj.style.position = "absolute"; obj.style.top = pos_data + "px"; } timerID1=setTimeout('move1()',TimeSet1); }

回答No.3

ちょっと修正。 obj.style.top = pos_data + "px"; こうしないとうまく行かないかな。

r-taka
質問者

お礼

解決しました。 有難うございました。

r-taka
質問者

補足

taketan_mydns_jpさん、ご回答有難うございます。 試して見ましたが、まだ動作してくれませんでした。。 function move1(){ stepcnt = 0; for (i = 1; i <= 5; i = i +1){ obj = document.getElementById('GridImg'+String(i)); pos_data = obj.style.top; pos_data = pos_data - 2; if(pos_data <= 100){ pos_data = 800; } obj.style.position = "absolute"; obj.style.top = pos_data + "px"; } timerID1=setTimeout('move1()',TimeSet1); } まだどこかおかしいんでしょうか。。。。

回答No.2

obj.style.position = "absolute"; obj.style.top = pos_data; とすれば良いのではないでしょうか。 ブラウザ毎に振り分け、面倒ですよね。 Microsoftの独自仕様は、ユーザにとっては百害あって一利無し。

回答No.1
r-taka
質問者

お礼

参考サイト有難うございます。 "getElementById"がそもそもFireFoxで駄目と言う事なんでしょうか・・・・・・。

関連するQ&A

専門家に質問してみよう