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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

3723閲覧

JavaScriptでルーレットと一緒に画像を用いたアニメーションを動かしたい。

chanco

総合スコア0

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

2クリップ

投稿2020/08/19 07:05

前提・実現したいこと

CodEditorでJavaScriptの勉強をしている初心者です。
ルーレットが動くのに合わせてバックで画像もパラパラアニメの様に動く様にしたい(添付画像みたいに)のですが方法が全く分かりません...。

ルーレットを作るところまではできているのですがその後どうすれば良いかご教授お願いします!
イメージ説明

該当のソースコード

<!DOCTYPE html> <html> <head><title>ルーレット</title> <script type="text/javascript"> spd=100; tID=0; i=0; j=0; k=0; m=0; function start_slot(){ if(i>9){i=0;} if(j>9){j=0;} if(k>9){k=0;} document.f.x.value=i; document.f.y.value=j; document.f.z.value=k; if (m<1){i++;} if (m<2){j++;} if (m<3){k++;} tID=setTimeout("start_slot()",spd); } function stop_slot(){ if(m<3){m++; start_slot();} if(m>2&&(i==j&&j==k)){ alert("大当たり!やったね。"); } clearTimeout(tID); } </script> </head> <body bgcolor="#a1c3f1" text="#ffffff"><center> <table border="3" bgcolor="#b1a8ff"><tr><td> <center> <br><b>ROULETTE</b> <form name="f"> <input name="x" size=1> <input name="y" size=1> <input name="z" size=1> <br><br> <input type="button" value="START" onClick="clearTimeout(tID); m=0; start_slot();"> <input type="button" value="STOP" onClick="stop_slot();"> <br><br> </td></tr></table> </body> </html>

試したこと

現状では変数i,j,kの数値をテキストボックスに表示させているが、添付画像の様にするには変数i,j,kの数値をimg[i].srcのようにして、配列のインデックスとして扱うと説明されたのですがどこに何を入力すれば良いのでしょうか...?

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

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

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

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

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

guest

回答1

0

極力元のソースを残した形で実装してみました。ご参考までに。

JavaScriptでinput要素のクラス名を変更し、隣接セレクタを使用してinput要素の直後のdivに背景画像を設定しています。

JSFiddle - Code Playground

使用するリソースを事前に読み込み

html

1<title>ルーレット</title> 2 3<link rel="preload" href="https://via.placeholder.com/24x48?text=+0+" as="image" type="image/png"> 4<link rel="preload" href="https://via.placeholder.com/24x48?text=1" as="image" type="image/png"> 5<link rel="preload" href="https://via.placeholder.com/24x48?text=2" as="image" type="image/png"> 6<link rel="preload" href="https://via.placeholder.com/24x48?text=3" as="image" type="image/png"> 7<link rel="preload" href="https://via.placeholder.com/24x48?text=4" as="image" type="image/png"> 8<link rel="preload" href="https://via.placeholder.com/24x48?text=5" as="image" type="image/png"> 9<link rel="preload" href="https://via.placeholder.com/24x48?text=6" as="image" type="image/png"> 10<link rel="preload" href="https://via.placeholder.com/24x48?text=7" as="image" type="image/png"> 11<link rel="preload" href="https://via.placeholder.com/24x48?text=8" as="image" type="image/png"> 12<link rel="preload" href="https://via.placeholder.com/24x48?text=9" as="image" type="image/png">

画像表示用のdivを追加

html

1<input name="x" size=1> 2<div class="image-frame"></div> 3<input name="y" size=1> 4<div class="image-frame"></div> 5<input name="z" size=1> 6<div class="image-frame"></div>

画像表示用のdivのスタイリング、元のinputを非表示。

css

1input[name=x], input[name=y], input[name=z] { 2 display: none; 3} 4 5.image-frame { 6 display: inline-block; 7 background-color: white; 8 background-image: url(https://via.placeholder.com/24x48?text=?); 9 background-repeat: no-repeat; 10 background-size: cover; 11} 12 13input + .image-frame { 14 width: 24px; 15 height: 48px; 16} 17 18input.image-0 + .image-frame { 19 background-image: url(https://via.placeholder.com/24x48?text=+0+); 20} 21 22input.image-1 + .image-frame { 23 background-image: url(https://via.placeholder.com/24x48?text=1); 24} 25 26input.image-2 + .image-frame { 27 background-image: url(https://via.placeholder.com/24x48?text=2); 28} 29 30input.image-3 + .image-frame { 31 background-image: url(https://via.placeholder.com/24x48?text=3); 32} 33 34input.image-4 + .image-frame { 35 background-image: url(https://via.placeholder.com/24x48?text=4); 36} 37 38input.image-5 + .image-frame { 39 background-image: url(https://via.placeholder.com/24x48?text=5); 40} 41 42input.image-6 + .image-frame { 43 background-image: url(https://via.placeholder.com/24x48?text=6); 44} 45 46input.image-7 + .image-frame { 47 background-image: url(https://via.placeholder.com/24x48?text=7); 48} 49 50input.image-8 + .image-frame { 51 background-image: url(https://via.placeholder.com/24x48?text=8); 52} 53 54input.image-9 + .image-frame { 55 background-image: url(https://via.placeholder.com/24x48?text=9); 56}

inputvalue変更時にクラス名も変更。

javascript

1document.f.x.value = i; 2document.f.x.className = "image-" + i; 3document.f.y.value = j; 4document.f.y.className = "image-" + j; 5document.f.z.value = k; 6document.f.z.className = "image-" + k;

投稿2020/08/21 12:33

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問