
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは。
ANo1、2です。>「test_image」という白画像が表示されます
画像要素のaltに設定している「test_image」が表示されているものと思われます。
(スクリプトのaltを設定する文字を変えてみることで、確認できます)
要は、画像が表示できないのでブラウザが代替としてalt属性を表示しているのではないでしょうか。
原因としては
1)画像指定のURLが間違っている、または、画像データが壊れているなど
2)画像の読み込みに時間がかかっていて、まだ表示できない状態である
等が考えられます。
ANo1にも書きましたが、2)への対処方法としては最初に画像をプレロードしておく方法があります。
「画像 プレロード」などをキーに検索してみてください。
前回のご質問ではHTMLが「テンプレート」とのみ記されておりどれだけの自由度があるのか不明でしたが(今でも不明ですが)、HTML内に画像要素を記述できると仮定し、かつ、「次の回に同じものを表示をしない」という制御も不要として、以下のような考え方もありかと。
・スクリプトは単純に画像要素をシャッフルしているだけです。
・最初の5個のみの表示はCSSで行っています。(CSS3に対応していないブラウザでは全部表示されますが)
*補足のように画像が表示されない場合は、CSSのdisplay;noneの部分を外してご確認ください。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<style type="text/css">
#hoge img{ width:150px; height:100px; padding:1px; }
#hoge img:nth-child(n+6){ display:none; }
</style>
<script type="text/javascript">
window.onload = function(){
var target = document.getElementById("hoge");
var images = target.getElementsByTagName("img");
var i, imgs = [];
for (i=0; i<images.length; i++) imgs[i] = images[i];
setInterval(function(){
shaffle(imgs);
for(var i=0; i<imgs.length; i++) target.appendChild(imgs[i]);
}, 5000);
function shaffle(a){
var n = a.length;
while(n){
var j = Math.random()*n | 0;
var t = a[--n];
a[n] = a[j];
a[j] = t;
}
}
}
</script>
</head>
<body>
<div id="hoge">
<img src="img/photo00.jpg" alt="test_image1">
<img src="img/photo01.jpg" alt="test_image2">
<img src="img/photo02.jpg" alt="test_image3">
<img src="img/photo03.jpg" alt="test_image4">
<img src="img/photo04.jpg" alt="test_image5">
<img src="img/photo05.jpg" alt="test_image6">
<img src="img/photo06.jpg" alt="test_image7">
<img src="img/photo07.jpg" alt="test_image8">
<img src="img/photo08.jpg" alt="test_image9">
<img src="img/photo09.jpg" alt="test_image10">
<img src="img/photo10.jpg" alt="test_image11">
</div>
</body>
</html>
No.2
- 回答日時:
ANo1です。
今頃気が付くおバカなわたし。
>重複表示不可
は、一回の表示内に同じものがないって意味ね。
次の表示の時は重複してもよいってことですね。
それならもっと簡単だし、そのくらいのサンプルなら検索すればいろいろ見つかるはずですよ。
No1の例は、「次の回の表示には、現在表示中の画像は表示されない(連続表示しない)」という条件で考えてしまったのでの、いらないことをいろいろしてますね。(~_~;)
fujillin様、こんにちは。
このたびは丁寧なご回答、ありがとうございました。
NO1とあわせてお礼させていただいております。
よろしくお願いします。
No.1
- 回答日時:
こんにちは。
>上記がすべて叶うサンプルを見つけることができませんでした
通常公開されているものは一般化された仕様のものがほとんどですから、個別の仕様にピッタリのものを探しても見つかる可能性は低いです。
似たようなものは、探せばたくさん見つかると思いますので、それら(の考え方)を組み合わせたり。カスタマイズするか自作したほうが早いでしょう。
><body>タグ内はテンプレートとなっているため
といっても、対象とするHTML構造について何も提示されていないのでなんともわかりませんが…
そもそも、表示に拘束条件があるので「ランダム」とは言えないのではないでしょうか。
全セットの一通りが順に表示されるようにするのか、2回連続しないだけでバラバラでいいのかなど、条件がよくわからないけれど、勝手に後者と決めつけて…
ごく簡単なそれらしきものをご参考までに。
* 最初に画像のプレロードをしたほうが良さそうですが省略しています。
(インデントは全角空白になっています)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<style type="text/css">
#hoge img{width:150px; height:100px;padding:1px;}
</style>
<script type="text/javascript">
window.onload = function(){
//画像URLデータ
var imageURL = [
"img/photo00.jpg","img/photo01.jpg","img/photo02.jpg","img/photo03.jpg","img/photo04.jpg",
"img/photo05.jpg","img/photo06.jpg","img/photo07.jpg","img/photo08.jpg","img/photo09.jpg",
"img/photo10.jpg","img/photo11.jpg","img/photo12.jpg","img/photo13.jpg","img/photo14.jpg"
];
var dispNum = ; // 表示画像数
var id = "hoge"; // 表示用親要素のid
var imageON = [], elements = createImg(dispNum);
display();
setInterval(display, 5000);
//画像入れ替え表示(src属性書換え)
function display(){
shaffle(imageURL);
imageURL = imageURL.concat(imageON);
imageON = [];
for(var i=0; i<dispNum; i++){
imageON.unshift(imageURL.shift());
elements[i].src = imageON[0];
}
}
//配列をシャッフル
function shaffle(a){
var n = a.length;
while(n){
var j = Math.random()*n | 0;
var t = a[--n];
a[n] = a[j];
a[j] = t;
}
}
//id要素内に画像要素を作成
function createImg(n){
var elm = [];
var target = document.getElementById(id);
var e = document.createElement("img");
e.alt = "test_image";
for(var i=0; i<n; i++){
var t = e.cloneNode(true);
target.appendChild(t);
elm.push(t);
}
return elm;
}
}
</script>
</head>
<body>
<div id="hoge"></div>
</body>
</html>
fujillin様、こんにちは。
このたびは丁寧なご回答、ありがとうございました。
NO1と2あわせてのお礼になることをご容赦ください。
さっそくいただいたものを試させていただき…できました!
理想的な動作です。感激です。
ありがとうございます!!
しかしながら、時々、表示されない画像が現れてしまうようです。
(「test_image」という白画像が表示されます)
考えていただいた「次の回の表示には、現在表示中の画像は表示されない(連続表示しない)」のためでしょうか…?
(「重複表示不可」につきましてはお察しの通り、「一回の表示内に同じものがない」という意味です。わかりにくくて失礼しました)
そこでサンプルが他にも見つかるはずというお言葉に従いがんばって探したのですが、やはりぴったりなのは見つからず…。
サンプルをカスタマイズするには、javascript初心者すぎて力及ばず…。
もしfujillin様のお時間が許すようであれば、画像が常に5枚表示できるよう、もう少しお力をお借りできませんでしょうか。
よろしくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 フォルダ内の全ての画像を矢印キーでスライドできるようにしたい 1 2022/10/21 12:53
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- iPhone(アイフォーン) 同じ写真と動画をiOSが検出する便利な機能 写真のアルバムタブにて、画面を一番下までスクロールすると 3 2023/01/23 15:41
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- その他(プログラミング・Web制作) Leafletで画像をon、offさせる方法について 2 2022/11/01 15:34
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
- Excel(エクセル) エクセル、日々の集計整理方法。(再送です。) 5 2022/10/02 00:19
- Instagram インスタの画像を複数枚投稿出来るものと出来ないものがある問題についてどなたか教えて下さい。 インスタ 4 2022/06/07 13:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GASでチェックボックスを一括of...
-
スマホ上で、左右スワイプで次...
-
Cookieに保存されない
-
初心者です。gulpでコンパイル...
-
Adobe acrobat proでフォームを...
-
画面遷移を行わずに同一ページ...
-
変数宣言と初期値代入の場所に...
-
switch文のswitch(n)の部分を複...
-
jsでは、'で区切った部分を改行...
-
タグを教えてください。
-
ラジオボタンを複数選択したと...
-
jsで質問です。 formをsubmitし...
-
2025年相性がいい人のサイトの...
-
CookieをWebStoeageに変える
-
Outlookのアカウントがあるとメ...
-
jqueryのselect2で検索欄の文字...
-
<tr>指定した表の行要素をボ...
-
食材の期限を管理するためにGAS...
-
ビデオのJSについて
-
鍵盤アプリで、スマホの画面に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホ上で、左右スワイプで次...
-
タグを教えてください。
-
jqueryのselect2で検索欄の文字...
-
jsonテキストデータの並び替え...
-
初心者です。gulpでコンパイル...
-
ラジオボタンを複数選択したと...
-
階層別の組織図の自動作成について
-
jQueryで同じクラス名のものを...
-
二次元配列を使って順位をだす...
-
読み込んだQRコードをフォーム...
-
画面遷移を行わずに同一ページ...
-
セレクトを全て選択されていな...
-
【Google Apps Script】「ライ...
-
Adobe acrobat proでフォームを...
-
二次元配列の全要素の全要素を...
-
【GAS】WEBアプリでハイパーリ...
-
GASでGoogleフォームの自動返信...
-
フォームが空欄の時にフォーム...
-
セレクトボックスで配列を呼び...
-
イラストレーター、縦中横のシ...
おすすめ情報