• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像と音声を対応させてランダムに再生するには)

画像と音声をランダムに再生する方法

Proof4の回答

  • Proof4
  • ベストアンサー率78% (151/192)
回答No.4

No.3の補足に対して回答します。 プログラムの動作の仕組みについて、簡単にお伝えしておくと 画像の表示は、id="header"の要素の背景画像を変更する 音声の再生は、id="audiowrap"の要素内にaudio要素を書き出す というようになっています。 よって、id="header"やid="audiowrap"の要素がbody要素内に存在しないと動作しません。 現状、ブログ上にはid="header"の要素が存在しているため画像の切り替わりが動作しますが、ブログ上・ローカル両方においてid="audiowrap"の要素は存在しないため、音声は再生されません。 body要素内に <div id="header"></div> <div id="audiowrap"></div> を追加することでブログ上・ローカルに関わらず正常に動作します。 音声の再生に関して、空のaudiowrap要素を記述しないで実現することも可能ですが、スクリプトに多少の変更が必要です。

参考URL:
https://oshiete1.nifty.com/qa9349408.html
noname#229314
質問者

お礼

失礼しました、No.4の私の補足に関して、追記いたします。 >>一方、インターネット上のブログにおいては、 >>画像はブラウザに関わらず表示されてアクセスごとに切り替わりますが、 >>やはり、どうしてか音声が再生されないのです。パスのURLも注意深く確認したのですが、 >>パスに間違いがあるわけでもなく、本当に謎です。 >>ローカルエリア上のHTMLファイルでは、なんら問題なく再生されるのにです。 どうやらmp3のコーデックが壊れていたことが原因だったようです。 https://increment-log.com/audio-mp3-ie-error/ 上記を参考にし、コーデックをかきかえたところ、ブログ上で意図する挙動を確認できました。 本当に、どうもありがとうございます。 以下のブログで、桜の画像なら「桜です」、杉なら「杉です」、もみじなら「もみじです」と再生されました。 なんという、美しいプログラムでしょうか。 http://5k7aek5gd.blog.fc2.com/ ただ、依然として、以下の疑問が残ります。厚かましくて恐縮ですが、お時間あるときにでも、御確認をお願いできませんでしょうか? ーーーーーーーーーーーーーーーーー Chromeでは意図する挙動を確認できました。本当に感謝の言葉もありません。 ただ、InternetExplorerで表示しようとしますと、画像が何も表示されないのです。 つまりブラウザによって、結果が変わってしまうのです (インターネットオプションのセキュリティ項目で「マイコンピュータのファイルでのアクティブコンテンツの実行を許可する」をONにしているにもかかわらず。インターネットオプションのjavascriptの設定も、一通り、有効にしていると思うのですが、一体これは、何が原因なのでしょうか)。 Proof4様は、No3の御回答で、「背景画像を表示する部分はブラウザによって表示されない事があるため、修正が必要」と仰っておりました。 しかし、ご提示いただいた修正コードというのが、 document.head.innerHTML += '<style type="text/css">#header { background-image:url(' + data[rand].img + '); }</style>'; であり、これは、No1の背景画像を表示する部分のコードと全く同じになっております。この部分、今一度、ご確認いただくことはできませんでしょうか? ーーーーーーーーーーーーーーーーーーーー

noname#229314
質問者

補足

何度も、親身にどうもありがとうございます。 そうか、header要素やaudiowrap要素が存在しなければ、 かきだしようがない、ということなのですか。 思いだしました、 そうか、だからブログとローカル上との間で、動作するものとしないものがあったのか。 いただいたプログラムに問題があったのではなく、私の扱い方が問題だったということが、よく分かりました。 何度も辛抱強く御回答をいただきありがとうございます。 body要素内に欠けていたid="audiowrap"を追加することで、ローカル上の特定のブラウザ表示での意図する挙動を確認いたしました。つまり、桜の画像が表示されれば「桜です」、杉の画像なら「杉です」という挙動が実現できました。 いただいたプログラムは、ずっと大事にします。どうもありがとうございます。 ただ、まだ疑問は残ります。 まず、ローカル上での話なのですが、 Chromeでは意図する挙動を確認できました。本当に感謝の言葉もありません。 ただ、InternetExplorerで表示しようとしますと、画像が何も表示されないのです。 つまりブラウザによって、結果が変わってしまうのです (インターネットオプションのセキュリティ項目で「マイコンピュータのファイルでのアクティブコンテンツの実行を許可する」をONにしているにもかかわらず。インターネットオプションのjavascriptの設定も、一通り、有効にしていると思うのですが、一体これは、何が原因なのでしょうか)。 Proof4様は、No3の御回答で、「背景画像を表示する部分はブラウザによって表示されない事があるため、修正が必要」と仰っておりました。 しかし、ご提示いただいた修正コードというのが、 document.head.innerHTML += '<style type="text/css">#header { background-image:url(' + data[rand].img + '); }</style>'; であり、これは、No1の背景画像を表示する部分のコードと全く同じになっております。この部分、今一度、ご確認いただくことはできませんでしょうか? 一方、インターネット上のブログにおいては、 画像はブラウザに関わらず表示されてアクセスごとに切り替わりますが、 やはり、どうしてか音声が再生されないのです。パスのURLも注意深く確認したのですが、パスに間違いがあるわけでもなく、本当に謎です。ローカルエリア上のHTMLファイルでは、なんら問題なく再生されるのにです。 ブログ上・ローカルそれぞれに、 <div id="header"></div> <div id="audiowrap"></div> を追加したにも関わらずです。 ブログに関しては、運営サイト側のシステムの予期せぬ干渉なども考えられますので、それはよいのですが、 ローカルエリア上でIEブラウザにおいて画像が表示されないのはどういうことなのか、頭を悩ませております。

関連するQ&A

  • 画像のランダム表示について

    スクリプトに関する質問です。 JavaScriptの「var imglist = new Array」を使って、 閲覧するたびに画像がランダムに変わるようにしたいと思います。 その場合、ランダムに変わる画像を多くしてしまうと、 いったん全部読み込むなどの理由で、ロード時間が長くなるのでしょうか? それともロードの度にひとつだけのファイルを選ぶので変わらないのでしょうか? こちらはたくさんの画像をランダムに表示したいと思っているのですが、 あまり重くなるようなら画像をしぼろうかと考えています。 どなたかお解かりいただければ、ご回答ください。 よろしくお願いします。

  • 音楽をランダム再生するには

    FC2ブログで、アクセスされるたびにランダムでBGMが自動再生されるようにしたいのです。 自動再生まではaudioタグで容易に達成できたのですが、 ランダム再生するにはjavascriptをどう記述すればよいでしょうか。 スクリプトを教えていただけないでしょうか。 javascriptを使って、画像をランダムに切り替えすることは出来たので、 音楽もランダムに流せるはずだと思うのです。 ただし、<embed>タグは使用せず、audio要素を採用するものとします。 理由は、アクセスしたとき、利用者のブラウザの設定によって、「このページは、microsoftからのアドオン「windows media player」を実行しようとしています。許可しますか」という確認画面が表示されるためです。この場合、閲覧者の側で許可をしないと、自動再生されないので、事実上、自動に再生できていないことになります。 下記のaudioタグを使用するものとします(再生ボタン等を表示しません) <audio > <source src="http://~.mp3" autoplay> </audio> ちなみに、上記のことは技術的には難しいのでしょうか? 有料で誰かに依頼するレベルでしょうか?

  • スライド写真で2、3枚目をランダムで表示させるには

    bgSwitcherを使用してフェードインアウトするスライドショーを作りました。 [A固定]→[Bランダム]→[Bランダム]→[C固定] 1枚目、4枚目は指定画像に差替え表示できていますが、 2枚目、3枚目が同じ画像を表示してしまい、繰り返し再生しても再度ランダムに選んでくれず、初めに読み込んだ画像のままでした。 【実現したいこと】 ●imgBをランダム読み込みし、2枚目、3枚目で同じ画像が選ばれないようにしたい ●2巡目以降も、再生のたびにランダム処理を実施する どなたか、上記のものが実現できるように出来ないものでしょうか。 どうぞよろしくお願いいたします。 <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> <script src="js/jquery.js" type="text/javascript"></script> <script src="js/jquery.bgSwitcher.js" type="text/javascript"></script> <script language="javascript"> <!-- // JavaScript Document var imgA = ["images-top/A.jpg"], imgC = ["images-top/C.jpg"]; imgB = new Array(); imgB[0] = "images-top/B1.jpg"; imgB[1] = "images-top/B2.jpg"; imgB[2] = "images-top/B3.jpg"; imgB[3] = "images-top/B4.jpg"; imgB[4] = "images-top/B5.jpg"; n = Math.floor(Math.random()*imgB.length); jQuery(function($) { $('#bgSwitch-fadeOut').bgSwitcher({ images: [imgA, imgB[n], imgB[n], imgC], interval: 1000, fadeSpeed: 1000, }, true); }) --> </script> <style type="text/css"> .bg { width: 160px; height: 160px; padding: 20px; line-height: 1.6; } </style> </head> <body> <div> <div id="bgSwitch-fadeOut" class="bg"> <p>テキスト</p> </div> </div> </body> </html>

  • 画像をランダムに

    JavaScript初心者です。回答していただければさいわいです。 初心者といってもタグサイトからコピペしていじくるだけの者ですが。 画像をランダムに表示したいと思いJavaScriptを使用したのですが うまく表示させることができません。 画像自体表示していないことになってしまいます。 画像を表示させたい部分に <SCRIPT language="JavaScript"> <!-- // img = new Array(); img[0] = "t/1.jpg"; img[1] = "t/2.jpg"; img[2] = "t/3.jpg"; img[3] = "t/4.jpg"; img[4] = "t/5.jpg"; n = Math.floor(Math.random()*img.length); document.write("<img src='"+img[n]+"' border='0'>"); //--> </SCRIPT> とタグをうっているのですが、なにか足りないところがあるのでしょうか?

  • javascriptを使って画像のランダム表示とロールオーバーをセット

    javascriptを使って画像のランダム表示とロールオーバーをセットで行いたいのですが上手くいきません… javascript超初心者です…。画像をランダムに表示し、さらにそのランダムに表示された画像をそれぞれ違った画像にロールオーバーさせたいのですが上手くいきません。 一応以下のように書いて試しているのですが、ランダム表示はするのですが、ロールオーバーはエラーがでてしまい画像が切り替わりません。どのようにすれば上手く出来るか、知恵を貸してください。宜しくお願いします。 <html> <body> <SCRIPT language="JavaScript"> <!-- // ランダムに画像を表示する img = new Array(); onMouseover = new Array(); onMouseout = new Array(); // 画像のアドレス(数字はジャンプ先のアドレスと対応) img[0] = "top1.gif"; img[1] = "top2.gif"; img[2] = "top3.gif"; img[3] = "top4.gif"; img[4] = "top6.gif"; // マウスオーバー onMouseover[0] = "top1roll.gif"; onMouseover[1] = "top2roll.gif"; onMouseover[2] = "top3roll.gif"; onMouseover[3] = "top4roll.gif"; onMouseover[4] = "top6roll.gif"; // マウスアウト onMouseout[0] = "top1.gif"; onMouseout[1] = "top2.gif"; onMouseout[2] = "top3.gif"; onMouseout[3] = "top4.gif"; onMouseout[4] = "top6.gif"; n = Math.floor(Math.random()*5); document.write("<img src='"+img[n]+"' border='0' onMouseover='"+onMouseover[n]+"' onMouseout='"+onMouseout[n]+"'>"); //--> </SCRIPT> </body> </html> 補足 ●ランダム用の画像が1~5まで、ロールオーバー用の画像がa~eまであるとして、ランダム表示によって1が表示されたらロールオーバーで表示される画像はaのみ、マウスアウトしたら1に戻る、というようにしたいです。同じように2-b,3-c…というように対応させたいです。 ●ページ読み込み時のみランダム用画像をランダム表示させ、後は上記のような流れにしたいです。 長くなりましたが、どなたか回答お願いいたします。

  • 画像からランダムリンク

    Javascriptでランダムリンクをする場合、 <form> <input type=button onClick="jump()" value="ランダム"> </form> <script> url = new Array(); url[0] = "00.html"; url[1] = "01.html"; url[2] = "02.html"; function jump() { p = Math.round(Math.random() * (url.length - 1)); parent.top.document.location = url[p]; } </script> という記述を使うのは知っているんですが、 「ランダムリンク」というボタンではなく、 画像をクリックしてランダムリンクさせることは可能でしょうか? Javascriptでは無理な場合、 画像からランダムリンクを張る方法はありますか? CGI等でも構いませんので、お勧めがあれば教えてください。

  • HP上で音声ファイルをランダムで流すには

    HP上で画像をクリックしたら、ランダムで音声ファイル(4種類)が流れるようにするには、どうしたらよいでしょうか、教えていただけないでしょうか。 できましたらJavaScriptを使って、IE,firefox,Safari対応が望ましいです。 音声ファイルの形式は現在はaifですが、変換すればよいので、問いません。

  • 画像リンクをランダムに4つ表示する

    このようなタグを使って、画像リンクのランダム表示を作成しました。 ((hard内)) <script type="text/javascript"><!-- // var imglist = [ [ "画像1", "", "リンク先1" ] , [ "画像2", "", "リンク先2" ] ]; function RandomImageLink() { // var selectnum = Math.floor(Math.random() * imglist.length); // var output = '<a href="' + imglist[selectnum][2] + '">' + '<img src="' + imglist[selectnum][0] + '"' + ' alt="' + imglist[selectnum][1] + '"><br>' + imglist[selectnum][1] + '</a>'; // document.write(output); } // --></script> ((body内)) <script type="text/javascript"><!-- RandomImageLink(); // --></script> こうしてランダムに表示できるようになったのですが、私は『ランダムに1つ表示』ではなく、『ランダムに4つ表示』にしたいのです。 …どうすればいいのでしょうか? どなたか回答をお願いします。

  • ブログトップにランダムで画像を表示させる方法

    ブログのトップに画像をランダムで表示させたいと思っています。 テンプレートはfc2の共有プラグインのsimple04を使っています。 <script language=”JavaScript”> var images = new Array(); /* 画像URLを表示させたい分だけ書き込むこと */ images[0] = “”; images[1] = “”; images[2] = “”; images[3] = “”; images[4] = “”; images[5] = “”; images[6] = “”; var rnd = Math.floor((Math.random() * 100)) % images.length; document.write(‘<img src=’,images[rnd],’ border=”0″>’); </script> 自分で調べてみてこのタグを使えばいいことはわかったのですが、 HTMLの所に貼るのかCSSのところに貼るのかわかりません。 回答よろしくお願いします。

  • 画像ランダム表示、しかしダブらないように…

    トップページの画像をランダム表示させたいです。 1枚だけならどこかでソースが載っていたのでそれをコピーしたらいいだけだと思うので問題はないのですが、3枚をランダム表示させ、なおかつ同じ物が表示しないようにしたいのです。 もちろん、画像保存フォルダは1つです。また、ファイルは順次増やして行きたいです。 1枚目の画像が決定した後、それ以外の画像からランダムに選択。さらに1枚目・2枚目の画像が決定したらそれ以外の画像からランダムに選択。 こんな事が出来ますか? また、どうしたらいいのでしょうか? よろしくお願いします。