\r\n\r\n\r\n\r\n\r\n\r\n\r\n```\r\n\r\n```jquery\r\n$(function(){\r\n\r\n$('#changeImg').click(function() {\r\n$(this).attr({'src': '02.gif'});\r\n});\r\n\r\n});\r\n```\r\n\r\n### 試したこと\r\n\r\n1の画像を2の画像に切り替えるところまで。\r\nsetTimeoutやwhen&doneなど試してみましたが、\r\n初心者なのでよくわかりませんでした。\r\n\r\n### 補足情報(FW/ツールのバージョンなど)\r\n\r\nここにより詳細な情報を記載してください。","answerCount":2,"upvoteCount":0,"datePublished":"2018-10-07T01:51:36.958Z","dateModified":"2018-10-07T01:51:36.958Z","acceptedAnswer":{"@type":"Answer","text":"ご回答ありがとうございました。\r\n最後のタイマーで1の画像を表示させるところが動作せず、調べておりましたら\r\nsetTimeout内で$(this)を使用するときには注意が必要のようで\r\nいくつか方法があるようですが、私のレベルではまだ理解できませんので\r\nthisは使わず直接指定する方法で解決とさせていただきました。\r\n\r\nご協力誠にありがとうございました。\r\n\r\n<情報元>\r\nhttps://chaika.hatenablog.com/entry/2017/03/31/083000\r\n\r\n\r\n\r\n$(function(){\r\n\r\n$('#changeImg').click(function() {\r\n$(this).attr({'src': '02.gif'});\r\n\r\n setTimeout(function() {\r\n $('#changeImg').attr({'src': '01.gif'});\r\n }, 5000); \r\n});\r\n\r\n});","dateModified":"2018-10-07T12:03:02.125Z","datePublished":"2018-10-07T12:03:02.125Z","upvoteCount":1,"url":"https://teratail.com/questions/150531#reply-226602"},"suggestedAnswer":[{"@type":"Answer","text":"質問文の認識誤りであったため下記コードを修正しました。\r\n失礼しました。\r\n\r\n```javascript\r\n$(function(){\r\n\r\n$('#changeImg').click(function() {\r\n $(this).attr({'src': '02.gif'}); // changeImgクリック後に02.gifに置き換え\r\n // 02.gifに切り替えた後、指定秒数経過で 01.gifに切り替え\r\n setTimeout(function() {\r\n $(this).attr({'src': '01.gif'});\r\n }, 1000); // 1000の値は02.gif(GIF画像)の再生時間をミリ秒で指定する\r\n});\r\n\r\n});\r\n```\r\n\r\n単一画像であれば上記コードで対応可能と思われます。\r\nsetTimeoutの第2引数に02.gifのアニメーションの再生時間をミリ秒で指定してください。","dateModified":"2018-10-07T07:49:02.125Z","datePublished":"2018-10-07T04:34:05.161Z","upvoteCount":1,"url":"https://teratail.com/questions/150531#reply-226530","comment":[{"@type":"Comment","text":"ご回答ありがとうございます。\r\nまずは時間指定以外コピペでやってみたのですが\r\nファーストビューから変化が見られませんでした。\r\n\r\n説明がわかりずらかったかもしれません。\r\n\r\n(1) 01.gif  が最初の表示\r\n(2) 02.gif がクリックされた後の表示(GIFアニメ)\r\n(3) 01.gif が時間指定などで最後に表示される画像( (1)に戻る)\r\n\r\nご負担にならないようでしたら引き続きご回答よろしくお願いします。","datePublished":"2018-10-07T05:49:06.592Z","dateModified":"2018-10-07T05:49:06.592Z"},{"@type":"Comment","text":"失礼しました。\r\n01.gif -> 02.gif -> 01.gifの切り替え順という事ですね。\r\nこちら認識誤りであったため回答内容を編集しました。\r\n\r\nお手隙の際にご確認いただければと思います。","datePublished":"2018-10-07T07:46:29.041Z","dateModified":"2018-10-07T07:46:29.041Z"},{"@type":"Comment","text":"ご協力ありがとうございました。\r\n助かりました!","datePublished":"2018-10-07T12:04:05.635Z","dateModified":"2018-10-07T12:04:05.635Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/jQuery","name":"jQueryに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/150531","name":"jQueryであるイベントの終了後、初期状態に戻したい"}}]}}}
質問するログイン新規登録

Q&A

解決済

2回答

4193閲覧

jQueryであるイベントの終了後、初期状態に戻したい

退会済みユーザー

退会済みユーザー

総合スコア0

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

3クリップ

投稿2018/10/07 01:51

0

3

前提・実現したいこと

jQueryで1の画像をクリックしたら2の画像(ループしない1回だけのGIFアニメ)に切り替え、その後1の画像に自動で戻す。ということをやりたいです。
戻したら、初期状態といいますか、またクリックで2の画像に
切り替えられるようにしたいです。

イメージとしては
1の画像は空のコップの絵、
2の画像は空のコップに水が注がれ満杯の状態の絵で静止。
そのままではコンテンツの内容上困るので空のコップの絵に戻したい。
といった感じです。
※あくまで例で、実際はコップの絵ではありません。

2のGIFアニメーションの再生が終わったら
1の画像に戻る。という見た目になればどういう方法でもよいです。

該当のソースコード

html

1<html> 2<head> 3<script src="./jquery-3.2.1.min.js"></script> 4<script src="./test.js"></script> 5</head> 6<body> 7<img id="changeImg" src="01.gif"> 8</body> 9</html>

jquery

1$(function(){ 2 3$('#changeImg').click(function() { 4$(this).attr({'src': '02.gif'}); 5}); 6 7});

試したこと

1の画像を2の画像に切り替えるところまで。
setTimeoutやwhen&doneなど試してみましたが、
初心者なのでよくわかりませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ご回答ありがとうございました。
最後のタイマーで1の画像を表示させるところが動作せず、調べておりましたら
setTimeout内で$(this)を使用するときには注意が必要のようで
いくつか方法があるようですが、私のレベルではまだ理解できませんので
thisは使わず直接指定する方法で解決とさせていただきました。

ご協力誠にありがとうございました。

<情報元>
https://chaika.hatenablog.com/entry/2017/03/31/083000

$(function(){

$('#changeImg').click(function() {
$(this).attr({'src': '02.gif'});

setTimeout(function() {
$('#changeImg').attr({'src': '01.gif'});
}, 5000);
});

});

投稿2018/10/07 12:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

質問文の認識誤りであったため下記コードを修正しました。
失礼しました。

javascript

1$(function(){ 2 3$('#changeImg').click(function() { 4 $(this).attr({'src': '02.gif'}); // changeImgクリック後に02.gifに置き換え 5 // 02.gifに切り替えた後、指定秒数経過で 01.gifに切り替え 6 setTimeout(function() { 7 $(this).attr({'src': '01.gif'}); 8 }, 1000); // 1000の値は02.gif(GIF画像)の再生時間をミリ秒で指定する 9}); 10 11});

単一画像であれば上記コードで対応可能と思われます。
setTimeoutの第2引数に02.gifのアニメーションの再生時間をミリ秒で指定してください。

投稿2018/10/07 04:34

編集2018/10/07 07:49
Lazy-player

総合スコア77

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

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

退会済みユーザー

退会済みユーザー

2018/10/07 05:49

ご回答ありがとうございます。 まずは時間指定以外コピペでやってみたのですが ファーストビューから変化が見られませんでした。 説明がわかりずらかったかもしれません。 (1) 01.gif  が最初の表示 (2) 02.gif がクリックされた後の表示(GIFアニメ) (3) 01.gif が時間指定などで最後に表示される画像( (1)に戻る) ご負担にならないようでしたら引き続きご回答よろしくお願いします。
Lazy-player

2018/10/07 07:46

失礼しました。 01.gif -> 02.gif -> 01.gifの切り替え順という事ですね。 こちら認識誤りであったため回答内容を編集しました。 お手隙の際にご確認いただければと思います。
退会済みユーザー

退会済みユーザー

2018/10/07 12:04

ご協力ありがとうございました。 助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問