• ベストアンサー

jsを使ったロールオーバーで特定の画像だけ表示できません

4017Bの回答

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1302/1773)
回答No.3

>gifをjpgに変えたら表示されました ~と言う事であれば。問題は確実に「そのGIF画像」にあります。 2~4番目の画像もGIF画像だったのですから。 お使いのブラウザでGIF画像が表示出来ないと言う訳でもありませんので。何らの理由で1番目のGIF画像のみ、ファイルが破損していたのかも? もしくは最初に1番目のGIF画像を作成する時に。 ブラウザではうまく解釈出来ない“イイ加減な”GIF画像形式になっていたのかも? ・もう1度、1番目のGIF画像をUpし直す。 ・別のツールを使って、1番目のGIF画像を作成保存し直す。 ~等々やってみれば原因が分るかもしれません??

maimainet
質問者

お礼

回答ありがとうございます。 私も画像自体に問題があるという印象で、いろいろやってみました。 ファイル破損を予想して、作り直しもしたのですが、やはりだめでした。 イラストレーターを使っていて、その他のツールで作成する方法がないためその点は試していません。 今、試しに正常に表示されている2番目のgif画像を1番目の画像の名前にリネームしてUPしてみたのですが、正常に表示されました。 やはり画像自体の問題かもしれませんね。 同じイラストレーターのアートボード内で作った同じような画像が、ひとつだけ、何度保存し直しても破損する、ということはあり得るのでしょうか?jsというより、イラストレーターの操作方法に関わることかもしれませんので、また別の機会に質問投稿させていただきます。

関連するQ&A

  • smartRolloverのカスタマイズについて

    smartRollover.jsを使っています。 ロールオーバー時に 〇〇_off.jpg が〇〇 _on.jpgに画像ファイル名が変更されるようになっています。 今は、〇〇_off.jpg にロールオーバー時に〇〇_on.jpgという 画像ファイルがない場合、何も画像が表示されません。 それを〇〇_off.jpgにロールオーバーしたときに〇〇 _on.jpgの画像がない場合に、ファイル名を変更させない(〇〇_off.jpgをそのまま表示する)ようにしたいのですが、どのようにすれば良いでしょうか? よろしくおねがいいたします。 ■smartRollover.js ------------------------- function smartRollover() { if(document.getElementsByTagName) { var images = document.getElementsByTagName("img"); for(var i=0; i < images.length; i++) { if(images[i].getAttribute("src").match("_off.")) { images[i].onmouseover = function() { this.setAttribute("src", this.getAttribute("src").replace("_off.", "_on.")); } images[i].onmouseout = function() { this.setAttribute("src", this.getAttribute("src").replace("_on.", "_off.")); } } } } } if(window.addEventListener) { window.addEventListener("load", smartRollover, false); } else if(window.attachEvent) { window.attachEvent("onload", smartRollover); } --------------------------

  • ロールオーバーについて

    ロールオーバーをシンプルなjavascriptで実装するとの事でとあるサイトにて、以下のようなスクリプトがありました。 http://css-happylife.com/archives/2007/0621_0010.php ▼▼▼スクリプト▼▼▼ function smartRollover() { if(document.getElementsByTagName) { var images = document.getElementsByTagName("img"); for(var i=0; i < images.length; i++) { if(images[i].getAttribute("src").match("_off.")) { images[i].onmouseover = function() { this.setAttribute("src", this.getAttribute("src").replace("_off.", "_on.")); } images[i].onmouseout = function() { this.setAttribute("src", this.getAttribute("src").replace("_on.", "_off.")); } } } } } if(window.addEventListener) { window.addEventListener("load", smartRollover, false); } else if(window.attachEvent) { window.attachEvent("onload", smartRollover); } ▲▲▲スクリプト▲▲▲ DOMを使ってimgのソースを 画像「_off.」から「_on.」に書き換えているんだなということまではわかるのですが、 if(document.getElementsByTagName) とか、 if(window.addEventListener) 等の記述があります。 ifのあとの()の中身は i>0 や (i>5)&&(i<=10) 等、演算子を用いた条件を記述するタイプした目にしたことがないのですが、 これはどういった事を表しているのでしょうか? ご教授お願いいたします。

  • IE8でのjavascriptエラーについて

    こんにちは。 IE8で表示されてしまうjavascriptエラーで困っています。 以前、別の方が同じような質問をされていたのですが、 理解できず新たに質問させて頂きました。 私はjavascriptに関して全くの素人です。 技術者の方、大変お手数ですが素人にも分かるような回答を頂けると とても助かります。 ロールーオーバに使用目的で以下のスクリプトをリンクしております。 // JavaScript Document function smartRollover() { if(document.getElementsByTagName) { var images = document.getElementsByTagName("img"); for(var i=0; i < images.length; i++) { if(images[i].getAttribute("src").match("_off.")) { images[i].onmouseover = function() { this.setAttribute("src", this.getAttribute("src").replace("_off.", "_on.")); } images[i].onmouseout = function() { this.setAttribute("src", this.getAttribute("src").replace("_on.", "_off.")); } } } } } if(window.addEventListener) { window.addEventListener("load", smartRollover, false); } else if(window.attachEvent) { window.attachEvent("onload", smartRollover); } 画像を2枚用意し、ロールオーバ時に●●●_on.jpg、そうでないときに ●●●_off.jpgと分けております。 マックサファリ、ファイアーフォックス、ウィンドウズIE6,7は 問題なく表示されます。 ところがウィンドウズIE8でのみ、このようなエラーが出てしまいます。 `get Attribute()` is null or not an object どうやらこの箇所が怪しいようです。 ↓ ↓ ↓ ↓ if(images[i].getAttribute("src").match("_off.")) ご回答を頂けるととても助かります。 どうぞよろしくお願い致します。

  • JavaScriptロールオーバーで画像が変わりません

    <SCRIPT TYPE="text/javascript"> <!-- if (document.images) { var imgtopon = new Image(); imgtopon.src = "images/menu/topon.jpg"; // ポイント時の画像 var imgtopoff = new Image(); imgtopoff.src = "images/menu/topoff.jpg"; // 通常の画像 } // ポイント時の処理 function On(name) { if (document.images) { document.images[name].src = eval(name + 'on.src'); } } // 放した時の処理 function Off(name) { if (document.images) { document.images[name].src = eval(name + 'off.src'); } } // --> </SCRIPT> </head> <body> <div id="headwrapper"> </div> <div id="wrapper"> <div id="header"> <h1>~</h1> </div> <div id="pagebody"> <A HREF="~" onMouseOver="On('imgtop')" onMouseOut="Off('imgtop')"><IMG SRC="images/menu/topoff.jpg" ALT="sample1" BORDER="0" WIDTH="102" HEIGHT="54" NAME="imgtop"></A> ↑↑↑終了 ポイントしていないときの画像は表示されますが、ロールオーバーしてもそのままの状態です。 宜しくお願いします。

  • マウスオーバー

    マウスオーバーの制御で下記のソースなのですが、今まで、こちらを教えてもらってやっていました。 今のままだと、オーバーで画像が変わるだけでマウスが外れると、元の画像に戻ってしまいます。該当ページへジャンプしたときに画像が変わったままにするのにはどうしたらよいのでしょうか。 <script LANGUAGE="JavaScript"> <!-- if (document.images) { //if image object is available img1on = new Image(); // MouseOver Images img1on.src = "image/1.gif"; img2on = new Image(); img2on.src = "image/2.gif"; img1off = new Image(); // MouseOut Images img1off.src = "image/1_1.gif"; img2off = new Image(); img2off.src = "image/2_2.gif"; } function imgOn(imgName) { if (document.images) { document[imgName].src = eval(imgName + "on.src"); }} function imgOff(imgName) { if (document.images) { document[imgName].src = eval(imgName + "off.src"); }} //--> </script> ***HTML***** <a onMouseOver="imgOn('img1')" onMouseOut="imgOff('img1')" TARGET="_self" href="index.htm"> <img NAME="img1" image/1_1.gif" width="130" height="20"></a> <a onMouseOver="imgOn('img2')" onMouseOut="imgOff('img2')" href="next.htm"> <img NAME="img2" SRC="image/2_2.gif" width="130" height="20"></a>

  • マウスオーバー・アウトの制御のソース

    複数のボタンでマウスオーバー・アウトの制御のソースを教えてもらったのですが、質問いたします。 この場合、このボタンはオーバーとアウト、それぞれ同じ画像を使用しているのですが、その場合でも全部違ったファイル名をつけなければいけないのでしょうか? 現在はそあしているのですが、何か無駄な気がして・・・。 よしくお願いします。 <SCRIPT LANGUAGE = "JavaScript"> <!-- if (document.images) { //if image object is available img1on = new Image(); // MouseOver Images img1on.src = "images/c1b.gif"; img2on = new Image(); img2on.src = "images/c2b.gif"; img3on = new Image(); img3on.src = "images/c3b.gif"; img1off = new Image(); // MouseOut Images img1off.src = "images/c1a.gif"; img2off = new Image(); img2off.src = "images/c2a.gif"; img3off = new Image(); img3off.src = "images/c3a.gif"; img4off = new Image(); } function imgOn(imgName) { if (document.images) { document[imgName].src = eval(imgName + "on.src"); }}   function imgOff(imgName) { if (document.images) { document[imgName].src = eval(imgName + "off.src"); }} //--> </SCRIPT>

  • ロールオーバーの外部ファイル化

    オンマウスにすると画像変化し、マウスを離すと元に戻る設定にしたいです。 複数の画像をロールオーバーさせたい場合、今までは外部ファイルに ↓↓ if (document.images) { // section on // test1 var test1on = new Image(); test1on.src = "img/test-02-02.jpg"; var test1off = new Image(); test1off.src = "img/test-01.jpg"; // test3 var test3on = new Image(); test3on.src = "img/test-03-03.jpg"; var test3off = new Image(); test3off.src = "img/testl-03.jpg"; // section off } // point section function On(id) { if (document.images) { document.images[id].src = eval(id + 'on.src'); } } // out section function Off(id) { if (document.images) { document.images[id].src = eval(id + 'off.src'); } } の様な記述をし、 <a href="1.html" onmouseover="On('test1')" onmouseout="Off('test1')"><img src="img/test-01.jpg" alt="img" id="test1" /></a> <a href="3.html" onmouseover="On('test3')" onmouseout="Off('test3')"><img src="img/test-03.jpg" alt="img" id="test3" /></a> として表示させていたのですが、今回<a href~ を使わないで<img~のみで構築したいのです。加えて、<img~の記述を上記の様にhtml内に長く書くのでなく、出来るだけシンプルにしたいのですが、どの様な改善を加えればよろしいのでしょうか。 分かりにくい説明ですが、ご理解ご指導の程よろしくおねがいします。

  • スマートな外部javaでロールオーバーのマウスポインタを変えるには?

    お世話になります。 スマートな外部javaでロールオーバーさせましたが、マウスポインタが矢印のままで指に変わりません。どうしたらよいのでしょうか? 【参照元】 http://blog.bluebox.in/2006/10/javascriptcsstarget_blank.html ドリームウィーバーなどでも簡単にマウスオーバー効果をつけることが出来ますが、img要素内にスクリプトを呼び出すコードが入ってしまうのであまりスマートではありません。 この、英語のサイトで紹介されている方法だと、img要素にclass="imgover"というクラスをつければ、src属性で指定したファイルのファイル名に_oを足した名前の画像を読み込んで表示してくれるというJavaScriptです。 /* Standards Compliant Rollover Script Author : Daniel Nolan http://www.bleedingego.co.uk/webdev.php */ function initRollovers() { if (!document.getElementById) return var aPreLoad = new Array(); var sTempSrc; var aImages = document.getElementsByTagName('img'); for (var i = 0; i < aImages.length; i++) { if (aImages[i].className == 'imgover') { var src = aImages[i].getAttribute('src'); var ftype = src.substring(src.lastIndexOf('.'), src.length); var hsrc = src.replace(ftype, '_o'+ftype); aImages[i].setAttribute('hsrc', hsrc); aPreLoad[i] = new Image(); aPreLoad[i].src = hsrc; aImages[i].onmouseover = function() { sTempSrc = this.getAttribute('src'); this.setAttribute('src', this.getAttribute('hsrc')); } aImages[i].onmouseout = function() { if (!sTempSrc) sTempSrc = this.getAttribute('src').replace('_o'+ftype, ftype); this.setAttribute('src', sTempSrc); } } } } window.onload = initRollovers;

  • クリックした自身の画像を別画像に入れ替えて表示

    前回質問したときに、解決したと思いましたが、動きがおかしいので 再質問します。 メニュー欄を画像にて表示し、画像クリックにて対象ページに飛ぶようになっています。 メニューをクリックした時、クリックした自身の画像を別画像に入れ替えて表示させようとしています。 onClick時に自分自身の画像を入れ替えし、リンク先が表示されるまで入れ替えた画像を表示したいのです。 下記のコードだと、クリック時、a_press.gif'は表示されず 何も表示されていない状態(背景画像)が見えてしまいます。 a_press.gif'<a href="http://www.yahoo.com/"> <img src="images/a_on.gif" onmouseover="this.src='images/a_rollover.gif';" onmouseout="this.src='images/a_on.gif';" onclick="this.src='images/a_press.gif'; this.onmouseover=null; this.onmouseout=null;"> </a> どなたかご教示いただけないでしょうか? よろしくお願いします。 IE,Firefox対応希望。

  • ある条件の画像のみ表示を切り替える

    jqueryでメニューのように並んでる画像に対してクリックさせるとクリックしたものに対してclass属性にcurrentというものを入れるようにしています。 $("#localSide h2 img").click(function(){ if($(this).attr("class") != "current"){ $("#localSide h2 img").removeClass("current"); $(this).addClass("current"); }else{ return false; } }); そのときにclass="current"となっている画像のみ(<img class="current"~>)にsrcの値を切り替えたいのですがどのような記述をすればいいのでしょうか。 以下のようなイメージです。 <img src="images/menu/bottun_off.gif"> ↓ <img class="current" src="images/menu/bottun_on.gif"> もし、imgにcurrentというclass名を持っていたら、その画像のsrc属性の値の_off.を_on.に差し替えるというようにしたいのですが、その画像の指定がうまくいきません。本当に困ってます。よろしくお願いします。

    • ベストアンサー
    • AJAX