imgPreviewのエラー
jQueryでマウスオーバー時に画像を表示する imgPreviewを使用してホームページを作成しました。
表示はうまくいったのですが、
「'undefined' は Null またはオブジェクトではありません。」というエラーメッセージが出てしまいます。
問題はimgpreview.jsのようで、
サムネイル画像のマウスオーバーでプレビューさせる部分が原因?のようです。
今回、サムネイル画像のロールオーバーは不要ですが
改善方法が分かる方がいらっしゃいましたら、教えてください。
ちなみに、以下のサイトを参考にして作成しました。
http://dispersalblog.blog90.fc2.com/blog-entry-206.html
【imgpreview.js】の中身
(function(c){c.expr[':'].linkingToImage=function(a,g,e){return!!(c(a).attr(e[3])&&c(a).attr(e[3]).match(/\.(gif|jpe?g|png|bmp)$/i))};c.fn.imgPreview=function(j){var b=c.extend({imgCSS:{},distanceFromCursor:{top:10,left:10},preloadImages:true,onShow:function(){},onHide:function(){},onLoad:function(){},containerID:'imgPreviewContainer',containerLoadingClass:'loading',thumbPrefix:'',srcAttr:'href'},j),d=c('<div/>').attr('id',b.containerID).append('<img/>').hide().css('position','absolute').appendTo('body'),f=c('img',d).css(b.imgCSS),h=this.filter(':linkingToImage('+b.srcAttr+')');function i(a){return a.replace(/(\/?)([^\/]+)$/,'$1'+b.thumbPrefix+'$2')}if(b.preloadImages){(function(a){var g=new Image(),e=arguments.callee;g.src=i(c(h[a]).attr(b.srcAttr));g.onload=function(){h[a+1]&&e(a+1)}})(0)}h.mousemove(function(a){d.css({top:a.pageY+b.distanceFromCursor.top+'px',left:a.pageX+b.distanceFromCursor.left+'px'})}).hover(function(){var a=this;d.addClass(b.containerLoadingClass).show();f.load(function(){d.removeClass(b.containerLoadingClass);f.show();b.onLoad.call(f[0],a)}).attr('src',i(c(a).attr(b.srcAttr)));b.onShow.call(d[0],a)},function(){d.hide();f.unbind('load').attr('src','').hide();b.onHide.call(d[0],this)});return this}})(jQuery);
お礼
fujillinさま、ご無沙汰しています。ご連絡が遅くなり、丁寧に教えて下さったのに申し訳ありませんでした。 この前いただいた回答、読んでもさっぱり分からなくて、やっぱり一から勉強しようと思い本とかネットを見ました。少しずつ分かってきて、fujillinさんが教えてくださったこともようやく分かってきました。 勉強に時間をかけすぎてデザインの時間が減り大変苦労しましたがようやく思い通りのものができました。本当にありがとうございます。どうしても結果が出てからご報告したかったものでこんなに遅くなってしまい、申し訳ありませんでした。 >画像Aからマウスが離れたら画像Cを非表示にすると、Cをクリックするまでに消えてしまうので、操作が難しいけど…? これは、画像Aの上にCがのるよう設定しているので問題ないと思います。がこの言葉にヒントを得て、結局Aの上に既にCが載っている画像にしてしまい、表示非表示するのはBだけという簡単なものにしてしまいました。 ということで、最初から最後までfujillinさんのおかげでした。ありがとうございます。お会いしてお詫び&お礼がしなきゃいけない位のレベルですがどうぞお許し下さい。 しかし、Bにpng透過画像を使用していたためIE6では表示が汚く、また新たな問題が浮上してきました。もうほんとイヤ…。やっぱりfujillinさんが最初にアドバイス下さったようにFLASHで作るしかないかもと思ってます。 でもこの問題は解決しましたので、本当にありがとうございました!!