• ベストアンサー

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

  • javascriptをCSSに書き込むと動作しません。何故ですか?

    下記のjavascriptをCSSに書き込みました。拡張子は.jsとしました。 jsのフォルダにtopmuv.jsというファイル名にしました。 <script type="text/javascript"> <!-- function blink() { if (!document.all) { return; } for (i = 0; i < document.all.length; i++) { obj = document.all(i); if (obj.className == "blink") { if (obj.style.visibility == "visible") { obj.style.visibility = "hidden"; } else { obj.style.visibility = "visible"; } } } setTimeout("blink()", 500); } // --> </script> </head> <body onload="blink()"> htmlの読み込みは <LINK rel="stylesheet" href="js/topmuv.js" type="text/javascript"> と書いています。 この場合、上記javascriptのソースをシート上にダイレクトに書き込むと正常に動作しますがcssにすると動作しません。 何が悪いのでしょうか? 詳しい方宜しくお願いします。

  • IEでもFirefoxでも動作する点滅文字について

    IEでもFirefoxでも動作する点滅文字について Internet ExplorerでもFirefoxでも動作する点滅文字を作成するため、 下記のサンプルソースを作成したのですが、 Internet Explorer7では動作するものの、Firefox3.6では動作しませんでした。 その為、Internet ExplorerでもFirefoxでも動作する点滅文字の方法をご存知の方がいらっしゃいましたら、 ご教示の程、よろしくお願いします。 なお、下記の動作を想定しています。 1. 点滅時間は設定ファイルに記述して、点滅時間を調整したいと思います (その為、<blink>タグは使用できないかも知れません)。 2. ページ内の複数の箇所に設定したいと思います (ただし、設定箇所が何箇所になるかは、ページが動的に生成されているため、ランダムです。 その為、id属性で動作するものは使用できないかも知れません)。 3. MARQUEEタグを使用するものについては、位置あわせがうまく出来ませんでした。 【ソース】 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title>title</title> <script type="text/javascript"> <!-- function blink() { if (!document.all) { return; } for (i = 0; i < document.all.length; i++) { obj = document.all(i); if (obj.className == "blink") { if (obj.style.visibility == "visible") { obj.style.visibility = "hidden"; } else { obj.style.visibility = "visible"; } } } setTimeout("blink()", 800); } // --> </script> </head> <body onload="blink()"> <h1 class="blink">点滅サンプル</h1> <p>これは普通の文書</p> <p class="blink">これは点滅する文章</p> </body> </html> 以上、よろしくお願いします。

  • いくつか用意したフラッシュ(.swfファイル)を切り替え表示したい

    フラッシュで作成した.swfファイルをいくつか用意し、ホームページ上で切り替わるように表示したいのですが、どなたか詳しい方、教えていただけないでしょうか? 画像の切り替えのソース(以下----部分)を利用してみたのですが、.jpgの部分を.swfに置き換えても、上手く表示されませんでした。 具体的に、ソースを記述していただけると、大変うれしいです。 都合のいい質問ですいません。 よろしくお願いします。 ------------------------------------------- <html> <head> <title></title> <script language="JavaScript"> <!-- var cnt = 0; var dat = new Array("img1.jpg","img2.jpg","img3.jpg","img4.jpg"); prLdImg= new Array(); for (i=0; i<dat.length; i++){ prLdImg[i] = new Image(); prLdImg[i].src = dat[i]; } function nextImg(){ var obj = window.document.all('myImg'); if(timerID){clearTimeout(timerID);} cnt++; cnt %= dat.length; obj.filters.revealTrans.Apply(); obj.src = dat[cnt]; obj.filters.revealTrans.Play(); var timerID = setTimeout("nextImg()",3000); } // --></script> </head> <body> <img id="myImg" src="img1.jpg" style="filter:revealTrans(duration=2,transition=12)" onClick="nextImg()"> </body> </html> -------------------------------------------

  • サブウィンドウの動きを制御したい!

    親ウインドウのボタンをクリックすると、 サイズ400×300のサブウィンドウがモニタ画面の左上(0,0)にオープンするようにしました。 このサブウィンドウは、モニタ画面に現れると同時に、 まずは、ツツーッと下にすべってタテ位置のみモニタ画面中央に行き、 行き着いたところで今度は、右方向にツツーッと滑って、 最後にはモニタ画面のど真ん中に配置されるようにしたかったのです。 そこで、サブウィンドウ内には、以下のスクリプト(onload)を書きました。 <script language="javascript"> <!-- var disW= screen.availWidth; var disH= screen.availHeight; var cX=disW/2-200; var cY=disH/2-150; var pX=0; var pY=0; var timerID; function moveWin(){ if(pY < cY){ pY+=5; window.moveTo(0,pY); timerID=setTimeout("moveWin()",1); } if(pY==cY){ pX+=5; window.moveTo(pX,cY); timerID=setTimeout("moveWin()",1); } else{ clearTimeout(timerID); } } //--> </script> でも、うまくいきません。 ふたつめのifがいけないのでしょうが、 未熟なためどうしてなのかわかりません。 どなたか、教えてください! よろしくおねがいします。

  • useless setTimeout cal 

    すみません。教えて下さい。 下のコードを書いて、動きはするんですが、実行後に 「useless setTimeout cal」というエラーが出てしまいます。 エラーを回避したいのですが、どうすればいいのでしょうか。 IE6/IE8/firefox3.6 などで試しました *********************************** <html> <head> <script type = 'text/javascript'> function item(){ var i = 0; write(); function write(){ document.write(i+"<br>"); i ++; if(i<10){setTimeout(write(),100);} } } </script> </head> <body> <script type = 'text/javascript'>item();</script> </body> <html> ***********************************

  • FireFoxでのオブジェクト指定&取得

    現在使用しているJavaScript使用フォームが、FireFoxで動作せず 解決に難渋しています。 (FireFoxのバージョンは3.5~です。) 仕様としては「チェックボックスにチェックを入れて、チェックを入れた 項目のみをURLエンコードして送信する」というものです。 (チェックを一つも入れていない場合は送信しません。) 以下がJavaScriptのソース部分になります。 function urlmaker(obj,chks){ var domain = ""; var agmgetter = ""; var chkname = ""; var url = ""; for(i=1;i<=chks;i++){ if (i < 10){ chkname = "seminar0" + i; }else{ chkname = "seminar" + i; } if (obj(chkname).checked){ agmgetter += "&" + chkname + "=" + encodeURL(obj(chkname).value); } } var dma1 = (obj.action).split("://"); var dma2 = dma1[1].split("/"); domain = dma2[0]; if (agmgetter != ""){ if (domain == "h20461.www2.hp.com"){ url = (obj.action) + "?preview=1" + agmgetter; }else{ url = (obj.action) + "?" + agmgetter.substr(1); } window.open(url,"_blank","resizable=yes"); } } 今までFireFoxで同様の問題は出ていなかったため、どこがおかしいのか まったく不明な状態です。 お分かりの方、ヒントだけでもよろしくお願いします。

  • レイヤーを動かしたい!

    レイヤーをボタンを押すと親レイヤーの中で子レイヤーがスクロールさせるようにしたいのですが、 下記のスクリプトでY軸方向にというのは出来るのですが、これをX軸方向に変えたいのです。 どこら辺をいじればよいのでしょうか? (おそらく必要と思われる部分を抜粋しています。) var speed=40 var loop, timer function makeObj(obj,nest){ nest=(!nest) ? '':'document.'+nest+'.' this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0; this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0; this.scrollHeight=bw.ns4?this.css.document.height:this.el.offsetHeight this.clipHeight=bw.ns4?this.css.clip.height:this.el.offsetHeight this.up=goUp;this.down=goDown; this.moveIt=moveIt; this.x; this.y; this.obj = obj + "Object" this.timerID= null; eval(this.obj + "=this") return this } function moveIt(x,y){ this.x=x;this.y=y this.css.left=this.x this.css.top=this.y } function goDown(move){ if(this.y>-this.scrollHeight+oCont.clipHeight){ this.moveIt(0,this.y-move) if(loop) this.timerID= setTimeout(this.obj+".down("+move+")",speed) } } function goUp(move){ if(this.y<0){ this.moveIt(0,this.y-move) if(loop) this.timerID= setTimeout(this.obj+".up("+move+")",speed) } } function scroll(speed){ if(loaded){ clearTimeout(oScroll.timerID); loop=true; if(speed>0) oScroll.down(speed) else oScroll.up(speed) } } function noScroll(){ loop=false if(timer) clearTimeout(timer) }

  • javascriptでのフェードイン

    javascriptを使用してhtml上の画像をフェードインにて表示したいと思っております。 ネット上の情報とこちらのサイトでのアドバイスを元に以下のソースを使用しておりますが WindowsのIE(6&7)で確認すると「エラー:オブジェクトがありません」と表示されてしまいます。 こちらで確認したところjavascript最後の行の「window.onload~」がエラーの原因となっているようなのですが、 修正する記述方法が分からず困っております。 解決策をご存じの方がおられましたらお手数ですが、 ご教授いただけないでしょうか。 何卒、宜しくお願い申し上げます。 ///javascript file(fade.js)/// document.write("<style type='text/css'>#thephoto1 {visibility:hidden;}</style>"); document.write("<style type='text/css'>#thephoto2 {visibility:hidden;}</style>"); document.write("<style type='text/css'>#thephoto3 {visibility:hidden;}</style>"); function initImage() { for(i=1;i<4;i++){ imageId = 'thephoto' + i; image = document.getElementById(imageId); setOpacity(image, 0); image.style.visibility = "visible"; fadeIn(imageId,0); } } function fadeIn(objId,opacity) { if (document.getElementById) { obj = document.getElementById(objId); if (opacity <= 100) { setOpacity(obj, opacity); opacity += 25; window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 100); } } } function setOpacity(obj, opacity) { opacity = (opacity == 100)?99.999:opacity; // IE/Win obj.style.filter = "alpha(opacity:"+opacity+")"; // Safari<1.2, Konqueror obj.style.KHTMLOpacity = opacity/100; // Older Mozilla and Firefox obj.style.MozOpacity = opacity/100; // Safari 1.2, newer Firefox and Mozilla, CSS3 obj.style.opacity = opacity/100; } window.onload = function() { initImage() } //////////////////////// ///html file/// <html> <head> <script type="text/javascript" src="fade.js"></script> </head> <body> <img src="img_01.jpg" id="thephoto1" /> <img src="img_02.jpg" id="thephoto2" /> <img src="img_03.jpg" id="thephoto3" /> </body> </html> ////////////////////////

  • 以下のJAVASCRIPTが、動作しないのですが、その原因がわかりませ

    以下のJAVASCRIPTが、動作しないのですが、その原因がわかりません。助けてください <html> <head> <script type="text/javascript"> var x=200,y=100; var dx=10,dy=10; function move() { setTimeout("move()",100); var ball=document.getElementById("ball"); x+=dx; y+=dy; ball.style.left=x; ball.style.top=y; if (x<=50 || x+10>=450) dx=-dx; if (y<=50 || y+10>=450) dy=-dy; } </script> </head> <body onLoad="move()"> <img src="wall.png" style="position:absolute;left:46;top:46"> <img id="ball" src="ball.png" style="position:absolute;left:200;top:100"> </body> </html>

  • 1ページ内で複数のwindow.onload = functionの動作

    Ajaxを使用して取得してきたRSSをinnerHTMLで表示するスクリプトを1ページ内に複数設置したいのですが、うまくいきません。 prototype.jsを使うと複数のonloadを制御できるという記事を参考にしたのですが、動作しませんでした。(WindowsIE6で検証してます) http://hori-uchi.com/archives/2005_09.html BODY以下のソースはこちらです。現状だとどちらか一つだけなら動作する感じです。これをどちらも動作する方法をご教授いただけませんでしょうか。宜しくお願いします。 //RSS取得1箇所目 <div id="p1">roading1</div><script> window.onload = function(){ var u = document.getElementsByTagName("head")[0].appendChild(document.createElement("script")); u.type = "text/javascript"; u.charset = "utf-8"; u.src = "http://###"; } var xml = {}; xml.onload = function(data){ var items1 = data.items; var g = "\n"; for(var i = 0; i < Math.min(items1.length, 20); i++){ // } document.getElementById("p1").innerHTML = g; } </script> //RSS取得2箇所目 <div id="p2">roading2</div><script> window.onload = function(){ var u = document.getElementsByTagName("head")[0].appendChild(document.createElement("script")); u.type = "text/javascript"; u.charset = "utf-8"; u.src = "http://***"; } var xml = {}; xml.onload = function(data){ var items2 = data.Result; var h = "\n"; for(var i = 0; i < Math.min(items2.length, 20); i++){ // } document.getElementById("p2").innerHTML = h; } </script>

専門家に質問してみよう