• ベストアンサー

JavaScriptでwindowのスクロール

windows.scroll(0,y); でyを変化させてウィンドウをスクロールさせたいのですがしません 何が悪いのでしょうか? 他のコマンドがあれば教えてください

  • nubou
  • お礼率62% (293/470)

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

  • ベストアンサー
  • godakaz
  • ベストアンサー率72% (16/22)
回答No.5

元のソースのままをアップしていたとしたら、酷いね、元ソース。 修正したサンプルをアップするので、どこが違うのか見比べてね。 <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>Web Object No.0 -Scroll- </title> <script language="JavaScript"> <!-- var y=0;var yMax=200;var timerID; function stop_win(){clearTimeout(timerID);} function scroll_win() { if(!new_win||new_win.closed){stop_win();} else{ new_win.scroll(0,y);timerID=setTimeout("scroll_win()",100); if(y>yMax) y=0;else y++;new_win.status="y-position="+y; } } //--> </script> </head> <body bgcolor="#ffffff"> <h1 style="margin-bottom:1000;">scroll</h1> <script language="JavaScript"> <!-- window.scroll(0,500); var new_win= window.open('','scroll_win','width=300,height=200,scrollbars=1,status=1'); new_win.document.open(); new_win.document.write("<h1 style='margin-bottom:1000;'>Scroll Scroll!!</h1>"); new_win.document.write("<p>end</p>"); new_win.document.close();scroll_win(); //--> </script> <p>end</p> </body> </html>

nubou
質問者

お礼

動かなかった原因がわかりました 行数が少なくてするロースする必要がなかったのです 行数を増やしただけでするロールし出しました 示していただいたものするロースしてます <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>Web Object No.0 -Scroll- </title> <script language="JavaScript" type="text/javascript"> var y=0;var yMax=200;var timerID; function scroll_win() { new_win.scrollTo(0,y);timerID=setTimeout("scroll_win()",100); if(y>yMax) y=0;else y++; } function stop_win(){clearTimeout(timerID);} </script> </head> <body bgcolor="#ffffff"> <script language="JavaScript" type="text/javascript"> var new_win=window.open("","scroll_win","fullscreen=yes"); new_win.document.open();new_win.onunload=stop_win; new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.close();scroll_win(); </script> </body> </html>

その他の回答 (4)

  • godakaz
  • ベストアンサー率72% (16/22)
回答No.4

失礼しました。 scroll(x,y)というメソッドも、MSDNに記載されていますね。 ただ、scrollToを使うように推奨されているようです。 「scrollメソッドよりもscrollToを使用した方が良い。このscrollメソッドは下位互換性を保つために用意されている。 」(MSDNの解説より抜粋)

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpisdk/dhtml/references/methods/scrol
  • wo-007
  • ベストアンサー率68% (15/22)
回答No.3

ウィンドウをスクロールさせるさせるメソッドは以下の3つがあります。 (1) scroll(x, y) (2) scrollTo(x, y) (3) scrollBy(x, y) (1)は古い仕様で、過去の互換性のために残されているらしいので使わないほうが良いでしょう。 (2)はx,yに画面上の絶対的な位置を指定します。 (3)はx,yに現在の位置からの相対距離を指定します。 5秒ごとに移動するメソッドを載せますので参考にして下さい。 function idou(){  scrollBy(0,2);  setTimeout("idou()",5000); }

nubou
質問者

お礼

<html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> </head> <body bgcolor="#ffffff"> <script language="JavaScript" type="text/javascript"> var x=new Date("12/20/2002");document.write(x.toLocaleString()); function idou(){scrollBy(0,2);setTimeout("idou()",5000);} idou(); </script> </body> </html>

nubou
質問者

補足

<html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>Web Object No.0 -Scroll- </title> <script language="JavaScript" type="text/javascript"> var y=0;var yMax=200;var timerID; function scroll_win() { new_win.scrollTo(0,y);timerID=setTimeout("scroll_win()",100); if(y>yMax) y=0;else y++;new_win.status="y-position="+y; } function stop_win(){clearTimeout(timerID);} </script> </head> <body bgcolor="#ffffff"> <h1>scroll</h1> <script language="JavaScript" type="text/javascript"> window.scroll(0,500); var new_win= window.open("","scroll_win","width=300,height=200,scrollbars=1,status=1"); new_win.document.open();new_win.onunload=stop_win; new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.close();scroll_win(); </script> </body> </html> でもだめでした

  • godakaz
  • ベストアンサー率72% (16/22)
回答No.2

追加: 移動量を指定するときは、scrollBy(dx,dy) 位置を指定するときは、scrollTo(x,y) scroll(x,y)は間違いでは?

nubou
質問者

補足

window.scroll(0,y) 之間違いです 犬でも分かるJavaScriptの際とででていたのですが・・・

  • godakaz
  • ベストアンサー率72% (16/22)
回答No.1

sが余計です。(windows -> window) window.scroll(x,y);

nubou
質問者

補足

<html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>Web Object No.0 -Scroll- </title> <script language="JavaScript" type="text/javascript"> var y=0;var yMax=200;var timerID; function scroll_win() { new_win.scroll(0,y);timerID=setTimeout("scroll_win()",100); if(y>yMax) y=0;else y++;new_win.status="y-position="+y; } function stop_win(){clearTimeout(timerID);} </script> </head> <body bgcolor="#ffffff"> <h1>scroll</h1> <script language="JavaScript" type="text/javascript"> window.scroll(0,500); var new_win= window.open("","scroll_win","width=300,height=200,scrollbars=1,status=1"); new_win.document.open();new_win.onunload=stop_win; new_win.document.write("<h1>Scroll Scroll!!</h1>"); new_win.document.close();scroll_win(); </script> </body> </html> でだめなのです

関連するQ&A

  • javascriptでスクロールの上下を検知

    $(window).scrollイベントで、「上にスクロールした時」や「下にスクロールした時」という ことをjavascriptで検知できるのでしょうか。

  • スクロール位置を中央にしたい

    こんにちは。質問させてください。 クリックした位置に画面がスクロールするものを作っています。 今の状態だとクリックした位置にスクロールするのですが ストップする位置が画面の左上で止まります。 これを画面の中央で止まるようにしたいのです。 ヒントをいただけませんでしょうか。宜しくお願い致します。 // 現在のスクロール量を取得 function getScroll(){ var x, y; if(document.all !== void 0){ // IE4, IE5, IE6 x = document.body.scrollLeft; y = document.body.scrollTop; }else if(document.layers !== void 0 || (navigator.userAgent.indexOf("Opera") != -1 || window.opera !== void 0)){ // NN4, Opera6 x = window.pageXOffset; y = window.pageYOffset; }else if(navigator.userAgent.indexOf("Gecko") != -1){ // NS6, Mozilla x = window.scrollX; y = window.scrollY; }else{ x = y = 0; } return {x: x, y: y}; } // スクロール始めのスクロール量 var SCROLL ; var divCountScroller = 50 ; // 分割数 // 現在のスクロール位置から、指定座標までスクロールします function scroller( x, y, count ){ if( count === void 0 ){ count = 0 ; SCROLL = getScroll(); } if( count++ < divCountScroller ){ var c = count/divCountScroller ; var nx = SCROLL.x+( x-SCROLL.x )*( c+1/Math.PI*Math.sin( Math.PI*c ) ); var ny = SCROLL.y+( y-SCROLL.y )*( c+1/Math.PI*Math.sin( Math.PI*c ) ); window.scrollTo( nx, ny ); setTimeout( "scroller("+x+","+y+","+count+");", 30 ); } }

  • JavaScript スクロール制御

    javascriptの動作についてご教授下さい。 ウィンドウ画面が横1275px 縦925pxで パージ内容が横長の横2350px 縦925pxの ページ全体を横軸スクロールで表示可能なサイトで、 <img>タグで画像を非表示(配置はセンター付近)し、 ある画像リンクへの文字列をクリックでjavascriptから その<img>を非表示から表示に切り替えています。 (ページイメージ)                        |リンク文字位置|               |img位置| 横2350px----------------------------------------------------→ で、今回の質問なのですが、リンク文字はページ右辺に配置しており javascriptからimgを可視化するとスクロールが初期位置(横0)に戻ってしまいます。 スクロール位置はそのままで画像の可視化・非可視化を切り替えたいのですが、ムリなのでしょうか?? いちよう可視化後に scroll()でスクロールの位置を指定していても スクロールが初期位置(横0)に戻ってしまいます。↓↓↓ この現象はJavaScriptの仕様なのでしょうか?? 横長のページであることと、リンク文字の配置は仕様として 変更できないものとお願いいたします。 環境 WinXP SP3 IE8(8.06) 画像切り替えソース //引数urlの画像をimgで表示する関数 function visi(url) {  //imgのプロパティを取得  var jpg = document.getElementById('jpg_link');  jpg.style.visibility = "visible"; jpg.style.display = "block"; jpg.src = url;  //scroll(1500,0); ← 1500まで行くが初期位置に戻る・・・ }

  • スクロールに沿ってjavascriptで背景画像を

    現在webサイトを作成しています。ページのメインビジュアルを「.mainVisual」というclassを作成し背景画像を指定して表示しています。 この背景画像を画面スクロールした際に、下に動くように以下のjavascriptを実装しています。 $(function() { $(window).scroll(function(){ var y = $(this).scrollTop(); $('.mainVisual').css('background-position-y', '0 ' + parseInt( +y / 10 ) + 'px'); }); }); この状態で動くのですが、今回新たに背景画像の元々の表示位置を「background-position」で調整したいと考えています。(単純に画像が下に下がるので、事前に画像の位置を上に上げておきたい) cssの記載で位置の調整はできるのですが、スクロールしてjavascriptが実装されると「background-position」の値が0pxになってしまい、背景画像の指定位置が元に戻ってしまいます。 こちら既に指定指定した「background-position」の値を残しつつ、jsでスクロールに併せて要素を動かすにはどのようにすればよいでしょうか。 わかりにく説明と、ひどく初心者の質問で大変に恐縮ですが、どなたかご教授いただけませんでしょうか。 よろしくお願いいたします。

  • CSSだけで、テーブルにスクロールバーを表示させたいのですが…

    CSSを使い、テーブルにスクロールバーを表示させたいのですが <div style="height:60px; width:300px; overflow-y:scroll;"> <table border=1 width=300> : </table> </div> 上記の方法だと確かにスクロールバーは表示されるのですが、出来ればDIVを使わずに、作っておいたCSSを適用するだけで、テーブルにスクロールバーを表示させることは可能でしょうか? 出来れば、スクロールバーの色を変更して、横(X軸)のスクロールバーも消したいのですが… CSSで .scroll { overflow: scroll; visibility: visible; height: 100px; width: 140px; } とやってみたのですが、どうしてもスクロールバーが表示されません。何が足りないのか、もしくは根本から間違っているのかがわかりません。 ご存知の方教えて下さい。

    • ベストアンサー
    • HTML
  • スクロールパッドが動きません

    FUJITSU LIFEBOOK P772G Windows 8から Windows10 にUP  スクロールパッドが動きません。Synaptics Scroll Pad V7.2? ドライバーが見当てりません。このドライバーはどこから入手すればよいのでしょうか?ご指導ください。

  • 自動的にスクロールするようにするには

    文章が自動的にスクロールするようにしたいので本を見ながらやってみたらできたのですが・・・ 下がる速度が思ってたほど遅いです。個人的にはもっと高速で下に下がって欲しいのですが超低速で下がっていきます。どうすれば早くなるか教えてください。それともこれ以上早くは下がってくれないとか? <html> <body> <head> <title></title> </head> <body> <script language="javascript"> <!-- count = 0; var timerlD; function Scroll(){ count += 1; if( count < 600) { scroll(0, count ); } else{ cleartimeout( timerlD ); count = 0; return; } timerlD = setTimeout( "Scroll()", 1 ); } //--> </script> ここに自動的にスクロールする文章を打ってます。 gooに投稿できる文字数の関係で消しました。 <!--最後にスクロールON! --> <script language="javascript"> Scroll(); </script> </body> </html>

  • Firefox3.5.2で常時スクロールバーを表示する方法

    今までWEBページを作成していて、 画面遷移時のスクロールバーによる画面のガタつきを防ぐために、 html { overflow-y:scroll; } としていたのですが、Firefox3.5.2ではスクロールバーが 表示されなくなってしまいました。 どなたか、Firefox3.5.2で常時スクロールバーを表示する方法を ご存知でしたら教えていただけないでしょうか?

  • リストビューのスクロールバーを非表示にしたい

    eMbedded Visual C++ 4.0 、MFC 、ダイアログベースでプログラミングをしています。 リストビューのスクロールバーを非表示にしてCListCtrl::Scrollを使い別のプログラムからスクロールさせたく、 「EnableScrollBarCtrl」や「ShowScrollBar」を使ってみたりしましたが非表示にできません。 リストビューのプロパティで「スクロールさせない」にチェックすると、CListCtrl::Scrollによるスクロールができなくなってしまいます。 非表示でCListCtrl::Scrollでスクロールできる方法をご存知でしたら教えてください。 なぜ別のプログラムでスクロールさせたいのかといいますと複数のリストビューを連動させてスクロールさせたいためです。 eMbedded Visual C++ 4.0はVC++6.0と似ているようですのでそのあたりに詳しい方アドバイスをください。

  • Firefoxスクロールバーの有無でページがずれる

    Firefoxスクロールバーの有無でページがずれる 縦の長さが長いページから短いページに切り替えるとき、スクロールバーの関係で左右にガタガタずれて見えるためcssで html{ height:100%; margin-bottom:1px;} と入れてみました。(ネットで探したものです) そうするとOperaとgoogleとSafariではずれなくなったのですが、Firefoxだけ相変わらずずれます。 overflow-y:scrollにするとずれませんでしたが、IEで見たときスクロールバーが二重に見えたので、この方法は避けたいです。 Firefoxでもガタガタずれずに切り替えられる方法はありませんでしょうか? よろしくお願いします。

専門家に質問してみよう