お世話になります。
関数例えばGetCriteria で、<img src=・・・ onmousedown=・・・
と、いう文字列を10程取得しました。
そして、onmausedownで、GetCriteria()関数を呼び出し、続けて、innerHTMLでこの文字列から画像をサムネイル画像として表示しました。
ここまでは、できました。
ところが、GetCriteriaを呼び出す
onmausedownの該当の箇所をクリックすると、
あるときは、該当の画像全てが、あるときは、2つと少し、あるときは、4つと少し、
などというように不規則に表示されるようになってしまいました。
この現象は、IE6で発生し、NN7.1では発生しません。
更に、IE6の現象として、以下のようなことも起こります。
このいくつか表示されたサムネール画像をクリックすると、そのサムネール画像の基の大きさの画像を表示するようにしています。サムネール画像自体は上記のとおり表示されていないにもかかわらず、表示されるべき場所をクリックすると、基の画像が表示されます。つまり、イベントが発生します。
メモリ不足のせいかと、IEを起動し直しても駄目です。
よろしくご教示願えないでしょうか。
お願いします。
No.3ベストアンサー
- 回答日時:
画像のプリロードとして以下の書き方だと保持されていないです。
>for (x=0; x < (ImgDataArray[ArryNo].length)/fielLength; x++){
>DataNo = fielLength * x ;
>var myimage=new Image();
>myimage.src=ImgDataArray[ArryNo][DataNo];
>}
以下の書き方では、src として適当ではありません。
>rtnCreteria += ' border="0" src=" '
>rtnCreteria += myimage +'" '
(修正箇所を指摘するより、書いた方が早いような気がするので、)
以下修正したものを挙げます。
(書き方を少しオリジナルから修正していますが、それは、本質的な間違いだというものではありません、単に私の趣味です。
ID にファイル名がそのまま使えるかどうかはちょっと自信がなかったので、別に振ってあります)
//--------------------------------------------------------------
//-----------
//データ定義
//-----------
function ThumNail(id, file, comment, etc1, etc2){
var image = new Image();
image.src = file;
this.id = id;
this.image = image;
this.comment = comment;
this.etc1 = etc1;
this.etc2 = etc2;
}
var ImgDataArray = new Array();
ImgDataArray[0]=new Array(
new ThumNail('IMG1','img/01.jpg','P1','',''),
new ThumNail('IMG2','img/02.jpg','P2','',''),
new ThumNail('IMG3','img/03.jpg','P3','','')
);
//--------------------------------------------
//サムネイルを表示するタグ文字列を取得する関数
//--------------------------------------------
function DspThumNailCretera(ArryNo,TDWidth,TDHeight){
var thumArray = ImgDataArray[ArryNo];
var arraySize = thumArray.length;
var rtnCreteria='';
rtnCreteria += '<TABLE style="font-size:13px;text-align:center;"><TR>';
for(var x=0; x < arraySize ; x++){
rtnCreteria +=
'<td style="vertical-align:top;' +
'width:' + TDWidth+ ';' +
'height:' + TDHeight + ';' +
'">';
//画像表示
rtnCreteria +=
'<a href="javascript:void(0)" ' +
'onMousedown' +
'="SetCrntX(' + ArryNo + ',' + x +')">' +
'<img ' +
'id="' + thumArray[x].id + '" ' +
'border="0" ' +
'src="' + thumArray[x].image.src +'" ' +
'width="' + (TDWidth - 5) + '"' +
'>' ;
//一行コメントの表示
rtnCreteria +=
'<BR>'+ thumArray[x].comment +
'</a>' +
'</TD>' ;
}
rtnCreteria += '</TR></TABLE>';
return rtnCreteria;
}
//------------------------------
//ニュースをブラウジングする関数
//------------------------------
function DspNews(){
var imgObj=document.getElementById("NewsAreaID")
//サムネイルを表示するタグ文字列を取得
var GetCriteria=DspThumNailCretera(0,60,80);
// alert(GetCriteria);
imgObj.innerHTML=GetCriteria;
}
この回答への補足
やってみました。スクリプトを大きく書き直しました。
>htmlで、
><a href='javascript:void(0)' onMousedown='DspNews()'> ニュース2005/02</a>
のところで、DspNews()を実行すると、つまり、マウスをクリックしたときにDspNews()を実行すると、不規則にサムネール画像が表示されます。
このhtmlの最後で、DspNews()を実行したときは、正常にサムネイル画像は表示されます。
DspNews()の最後の行に
alert("画像読み込みに時間ががかかります。");
などと、すると正常にサムネール画像は表示されます。
また、NN7.1ではalert()が無くても正常に表示されます。
更に、スクリプトを書き直したことにより、表示されるサムネール画像の数が減りました。
以前は、2~5程表示されていましたが、スクリプトを書き直してからは、1~2程となりました。
BLUEPIXYさん、早速ありがとうございます。
thisの使い方もまだまだ、良くわからない初心者です。示していただいたソースを基に、今から勉強し直します。時間がかかりそうです。後ほど結果を報告させていただきます。
No.4
- 回答日時:
#3>スクリプトを書き直してからは、1~2程となりました。
そうですか・・返って悪くなっちゃいましたか・・すみません。
負け惜しみに聞こえるかもしれませんが、ウチでIE6SP2, Firefox1.5.0.2 で試してみたところでは(画像を9コにしても)一応問題なく表示できています。
innerHTML を使わない形式に変えた方がいいのかもしれませんね。
あるいは、innerHTML 後、ID を使って画像をセットするとか。
よろしければ、書き直したソースを補足していただけますか
(直るとは限りませんが)
できた。できました。
BLUEPIXYさん、本当にありがとうございました。
<a href='javascript:void(0)' onMousedown='DspNews()'> ニュース2005/02</a>
DspNews()で、毎回ImgDataArray[x]のデータを読み込んでいたのですが、
<head></head>
で、ImgDataArray[x]のデータを全て読み込み
DspNews(x)と、することにより一瞬に表示が切り替わるようになりました。
一番最初にご指摘されたキャッシュに読み込むという意味が少しわかったような、でも、キャッシュについて調べてみたところ、まだ、まだ、わかっていないような。
NN7.1で、できて、IE6でだめ。とか、innerHTMLで、サムネイルを表示したエリアをリフレッシュするようなことはできないものか。とか、問題は尽きませんが、この先も挑戦します。
今後ともよろしくお願いします。
どうもありがとうございました。
No.2
- 回答日時:
現状どういう風にやっているか、ソースともども補足していただけますか?
この回答への補足
BLUEPIXYさん、レスありがとうございます。
遠慮無く書かせていただきます。
よろしくお願いします。
//************************
//データ定義
//1レコード4フィールド
//************************
var ImgDataArray = new Object();
fielLength=4;
ImgDataArray[0]=new Array(
'news01.jpg','P1','','',
'news02.jpg','P2','','',
・・・・・・・・・・・・
'news10.jpg','P10','','',
);
//***********************
//サムネイルを表示するタグ文字列を取得する関数
//***********************
function DspThumNailCretera(ArryNo,TDWidth,TDHeight){
var DataNo=0;//データの通し番号
for (x=0; x < (ImgDataArray[ArryNo].length)/fielLength; x++){
DataNo = fielLength * x ;
var myimage=new Image();
myimage.src=ImgDataArray[ArryNo][DataNo];
}
var rtnCreteria=''
rtnCreteria += '<TABLE style="font-size:13px;text-align:center;"><TR>'
var DataNo=0;//データの通し番号
for (x=0; x < (ImgDataArray[ArryNo].length)/fielLength; x++){
rtnCreteria += '<td style="vertical-align:top;'
rtnCreteria += 'width:'+TDWidth+';'
rtnCreteria += 'height:'+TDHeight+';'
rtnCreteria += '">'
DataNo = fielLength * x ;
//画像表示
rtnCreteria += '<a href="javascript:void(0)" '
rtnCreteria += 'onMousedown'
rtnCreteria += '="SetCrntX('+ArryNo+',' + x +')">'
rtnCreteria += '<img '
rtnCreteria += 'id="' + ImgParmArray[ArryNo][0] + x + '" '
rtnCreteria += ' border="0" src=" '
rtnCreteria += myimage +'" '
rtnCreteria += 'width="'+ (TDWidth-5) +'"'
rtnCreteria += '>'
//一行コメントの表示
rtnCreteria += '<BR>'+ ImgDataArray[ArryNo][DataNo+1]
rtnCreteria += '</a>'
rtnCreteria += '</TD>'
}
rtnCreteria += '</TR></TABLE>'
return rtnCreteria;
}
//***********************
//ニュースをブラウジングする関数
//***********************
function DspNews(){
imgObj=document.getElementById("NewsAreaID")
//サムネイルを表示するタグ文字列を取得
var GetCriteria=DspThumNailCretera(0,60,80);
//alert(GetCriteria); //これを実行すると正常
imgObj.innerHTML=GetCriteria
htmlで、
<a href='javascript:void(0)' onMousedown='DspNews()'> ニュース2005/02</a><BR>
<div id="NewsAreaID">
</div>
No.1
- 回答日時:
キャッシュの関係かも、
画像については、動的にsrc で表示させようとするより
image オブジェクトであらかじめ取り込んでおいてそれを表示するようにした方がいいと思う。
この回答への補足
BLUEPIXYさん、早速レスありがとうございます。
タグ文字列を取得する関数
GetCriteria()に、タグ文字列を取得する前に、
つまり、この関数の最初に
var myimage=new Image();
for (x=0; x < (ImgDataArray.length; x++){
myimage[x]=ImgDataArray[x];
}
を、付け加えて、
ImgDataArray[x]
を直接表示するのでなく
myimage[x]
を表示するようになおしました。
改善されませんでした。
ImgDataArray[x]に表示させたい画像のファイル名を書いています。
だから、src=ImgDataArray[x]・・・
とする前に
一端myimage[x]に読み込ませたつもりですが、
>動的にsrc で表示させようとするより
>image オブジェクトであらかじめ取り込んでおいて
>それを表示するようにした方がいいと思う。
の、所の意味が今一わからなくて、やっています。
だから、これでは、おっしゃる意味と異なったことをやっているかもしれません。
また、
innerHTMLを用いて、GetCriteria()で取得した文字列をIE6で表示させる前にalert()で、取得した文字列を表示させてから、innerHTMLを用いて表示させると、全ての画像がIE6で表示されることに気がつきました。
だから、どうすれば良いかがわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) PCを立ち上げ時いつも同じ画像が出ます(トラブル発生、終了) 2 2022/04/23 12:46
- PowerPoint(パワーポイント) パワーポイント アニメーション効果で、テキストと同時に画像を表示させる方法を教えてください 2 2022/09/12 21:06
- Excel(エクセル) エクセルで日付が入っているセルを一定の法則に従って違うセルに表示したい 2 2022/04/04 17:16
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- WordPress(ワードプレス) ワードプレスで、左寄せ画像と文字を横並びにせず、画像の下に文字を表示される方法を教えてください 1 2022/04/24 11:06
- Excel(エクセル) エクセルで対象日に該当するデータがある場合に別表へ全対象者を表示させたい。 3 2023/07/12 09:48
- X(旧Twitter) ツィッターの画像表示について 1 2023/08/17 09:28
- Windows 10 フォルダ内の全ての画像を矢印キーでスライドできるようにしたい 1 2022/10/21 12:53
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- フリーソフト 画像貼り付け、URLに飛べる軽いメモ帳 3 2022/05/12 07:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScript スライドの画像にリ...
-
USEMAPでの指定区域にマウスオ...
-
javascript keisanとlook
-
lightbox2をiframeから外に表示...
-
画像ランダム表示、しかしダブ...
-
ホームページビルダー13を使っ...
-
画像と説明文を別データで作りたい
-
【java】背景画像を一定時間で...
-
HTMLで条件分岐はできますか?
-
Javascriptで指定した日付と時...
-
edgeでスクロールバーに色が表...
-
JAVAスクリプトの質問
-
Gifアニメ、最後のコマに行った...
-
MAX関数を使ってからLEFT JOIN...
-
c++std::string型をTCHARに変換...
-
javascriptテキストBOX色を元に...
-
jspでcssが読み込めない
-
jsでサムネイルを拡大表示 複...
-
JQueryで画像の上で文字を動かす
-
createElementで作成した要素を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
textareaに画像を表示したい
-
JavaScript スライドの画像にリ...
-
1枚の画像をクリックして複数の...
-
HTMLで条件分岐はできますか?
-
Javascript で共通の処理をどこ...
-
Gifアニメ、最後のコマに行った...
-
JavaScriptとチェックボックス...
-
画像の重なりの順序を代える方...
-
画像ランダム表示、しかしダブ...
-
javascriptで毎月替わる画像
-
1枚の画像をクリックすると複数...
-
オンマウスで、画像切り替え+...
-
透過pngの透明部分以外をクリッ...
-
Javascriptで指定した日付と時...
-
jQueryスライドショー画像への...
-
JavaScript で flexslider の画...
-
lightbox2をiframeから外に表示...
-
重なった画像にクリックイベン...
-
Twitterの埋め込みしたWebペー...
-
画像をフォルダに入れれば表示...
おすすめ情報