- ベストアンサー
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> -------------------------------------------------------------- 上記を最小減の変更で修正したと思っております。 ご教授宜しくお願い致します。
- みんなの回答 (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)
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); }
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
ちょっと修正。 obj.style.top = pos_data + "px"; こうしないとうまく行かないかな。
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
obj.style.position = "absolute"; obj.style.top = pos_data; とすれば良いのではないでしょうか。 ブラウザ毎に振り分け、面倒ですよね。 Microsoftの独自仕様は、ユーザにとっては百害あって一利無し。
- himajin100000
- ベストアンサー率54% (1660/3060)
お礼
参考サイト有難うございます。 "getElementById"がそもそもFireFoxで駄目と言う事なんでしょうか・・・・・・。
お礼
解決しました。 有難うございました。
補足
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); } まだどこかおかしいんでしょうか。。。。