質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

1288閲覧

javascriptで一定時間で画像を変える

SatouAruru

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/07/20 18:42

・startボタンを押すと,新ウィンドウが開き,画像が表示される。
・新ウィンドウの画像は一定時間(1秒)ごとに変わる。
・stopボタンを押すと,新ウィンドウが閉じる。
という条件を満たしたプログラムを作っています。

ですが、新ウインドウで画像を変更する方法とopenをどの位置で入れればよいのかわからないので教えていただきたいです。

現在のソースコードですと毎回ウインドウを開いてしまうのは毎回openを入れているからというのは理解していますが、いろいろ試した結果エラーが起こらず、一番答えに近いと思ったこのソースコードを載せました。

該当のソースコード

<!DOCTYPE html> <html lang ="ja"> <head> <meta charset = "UTF-8"> <title>画像が変わる</title> </head> <body> <script> var win; num=1; function openwin(num){ win=open('images/img'+num+'.jpg','null','width=100 height=200 top=100 left=400'); } function closewin(){ win.window.close(); } function gazo(){ open() if(num==1){ openwin(num) num=2; } else if(num==2){ openwin(num) num=3; } else if(num==3){ openwin(num) num=4 } else if(num==4){ openwin(num) num=5; } else if(num==5){ openwin(num) num=1; } setTimeout("gazo()",1000); } function sClock(){ clearInterval(timer); } </script> <input type = "button" name="srt_btn" value="スタートボタン" onclick = "gazo()"> <input type = "button" name="stop_btn" value="ストップボタン" onclick = "sClock()"> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

似たような命題の質問がいくつも上がっていますが、どこかの課題でそろそろ提出期限なのでしょう。
ただ、この設問にはそもそもの問題があり、一般的なブラウザでは命題どおりに組むことができない可能性があります。

特に問題なのが window.open です。一般的なブラウザではユーザーの意図したアクション以外のポップアップを原則受け付けません。
たぶん、授業で使うブラウザにはIEを用いているのでは。それであるなら動きますが、最終更新がJuly 29, 2015と4年前から修正がされていない、過去のブラウザです。教材が古く更新されていないのでは。

【ポップアップとウィンドウメソッド】
https://ja.javascript.info/popup-windows

ほとんどのブラウザは、onclick などユーザがトリガーしたイベントハンドラ外から呼ばれた場合には、ポップアップをブロックします。

【Internet Explorer 11 - Wikipedia】
https://en.wikipedia.org/wiki/Internet_Explorer_11#History


コードの問題は指摘する程度で。

関数gazoにおいて、open()と書いている部分は不要です。(そのあと関数openwinを実行しているので)

clearInterval(timer); とありますが setTimeout("gazo()",1000); で処理をまわしているため終了できません。
また、書き方が古いのでsetTimeout(gazo,1000);と書いたほうがよいです。

【WindowOrWorkerGlobalScope.setTimeout() - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/WindowTimers/setTimeout

【WindowOrWorkerGlobalScope.setInterval() - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Window/setInterval

あと、varで宣言している変数がwinひとつだけです。numtimerもグローバル変数になっています。

onclickじゃなくaddEventListenerで処理するほうがよいです。

【三章第二回 イベントリスナ - JavaScript初級者から中級者になろう - uhyohyo.net】
https://uhyohyo.net/javascript/3_2.html

投稿2019/07/21 17:18

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問