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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

2701閲覧

javascriptで画像と文字をセットでランダム表示させ指定のURLに飛ぶようにしたい

Mrucurus

総合スコア11

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/05/22 20:10

当方、プログラミングのプの字もわからないド素人です、恥を忍んでお聞きいたします。

javascriptで複数枚の中から画像と文字をセットでランダムに表示させ、クリックしたら画像毎に違うURLに飛ぶ、というのをやりたいのですがうまくいきません。

ランダムに表示させリンク先に飛ぶのはできたのですが、画像と文字がセットではなくバラバラで表示されてしまいます。
画像1を表示したら文字1を表示、画像2を表示したら文字2を表示、という風にやりたいのですが、どうすればいいのでしょうか?

Googleの力を借りて私が使った画像ランダム表示のコードがこちらです

<SCRIPT language="JavaScript"> <!-- // ランダムに画像を表示する jmp = new Array(); img = new Array(); // ジャンプ先のアドレス(数字は画像と対応) jmp[0] = "表示させたいページのURL"; jmp[1] = "表示させたいページのURL"; jmp[2] = "表示させたいページのURL"; jmp[3] = "表示させたいページのURL"; jmp[4] = "表示させたいページのURL"; jmp[5] = "表示させたいページのURL"; // 画像のアドレス(数字はジャンプ先のアドレスと対応) img[0] = "表示させたい画像のURL"; img[1] = "表示させたい画像のURL"; img[2] = "表示させたい画像のURL"; img[3] = "表示させたい画像のURL"; img[4] = "表示させたい画像のURL"; img[5] = "表示させたい画像のURL"; n = Math.floor(Math.random()*jmp.length); document.write("<a href='"+jmp[n]+"'>"); document.write("<img src='"+img[n]+"' border='0'>"); document.write("</a>"); //--> </SCRIPT>

このコードにどう書き加えれば文字と画像をセットで表示させることができますか?

そして、とりあえずランダムじゃなくても一枚だけ表示できれば何か掴めるだろうと、こちらのサイトの情報と合わせて書いたコードがこちらです。非常に醜いものとなっております、御許し下さい

<SCRIPT language="JavaScript"> <!-- var image0 = new Image(); image0.src = "画像のURL"; list.push({ imageDeta:image0, textDeta;"表示させたい文字" }); var image = list[0].imageDeta; var text = list[0].textDeta; jmp = new Array(); image = new Array(); jmp[0] = "表示させたいページのURL"; image[0] = "画像のURL"; n = Math.floor(Math.random()*jmp.length); document.write("<a href='"+jmp[0]+"'>"); document.write("<image src='"+image[0]+"'width='160' height='100' border='0'>"); document.write("</a>"); //--> </SCRIPT>

もしかしたらと思いましたが、当然のように何も表示されませんでした...

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

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

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

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

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

hentaiman

2019/05/22 20:49

一つ目のコードでバラバラになる理由がない。確認ミスと思われるゆえ再度動かして確認してはどうか
guest

回答1

0

ベストアンサー

最小の変更でいくなら、上のコードに追加で、次のようなのを作っといて同じようにdocument.writeで書き出せばできます。

txt = new Array(); txt[0] = '...'; txt[1] = '...'; txt[2] = '...'; txt[3] = '...'; txt[4] = '...'; txt[5] = '...';

二つめのコードでは関連するデータをまとめて見通し良くしようとしたってことですよね。
次のような感じでできると思います。

data = [ { link: '表示させたいページのURL', image: '表示させたい画像のURL', text: '表示させたいテキスト' }, { link: '表示させたいページのURL', image: '表示させたい画像のURL', text: '表示させたいテキスト' }, //..... ]; n = Math.floor(Math.random() * data.length); document.write('<a href="' + data[n].link + '">'); document.write('<img src="' + data[n].image + '">'); document.write('<p>' + data[n].text + '</p>'); document.write('</a>'); //.....

投稿2019/05/22 21:03

set0gut1

総合スコア2413

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

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

Mrucurus

2019/05/22 22:00

コードを試していたら遅くなりまして申し訳ありません。 二つのコード、どちらでも文字と画像をセットでランダム表示させることができました まさか私の醜いコードまで簡潔に纏めてくださるとは...本当に素晴らしいです! 本当にありがとうございました、また機会があればよろしくお願いいたします。
set0gut1

2019/05/22 22:09

ベストアンサーありがとうございます!またよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問