画像入替JavaScriptが動かない

このQ&Aのポイント
  • ホームページ修正のための画像入替JavaScriptが動作しない
  • HTMLとCSSは理解しているが、JavaScriptの修正方法が分からない
  • 写真の変更やリンクのクリックで画像が入れ替わるJavaScriptの修正が必要
回答を見る
  • ベストアンサー

画像入替JavaScriptが動かない

今は既にいない担当者の方が作った、 ホームページ上で、画像上のリンクをクリックすると、画面下の画像がリンク先によって入れ替わると言うJavaScriptを設置しています。 この度、このホームページを修正する事になり、ローカルにデータをダウンロードし、動作確認をしようとした所、動作しませんでした。 HTMLとCSSはわかるのですが、JavaScriptがわからない為、どこを修正する必要があるのか教えて下さい。 ソースは以下になります。 ----------------------------------- window.onload = function() { ChangeImage(QueryString); } // QueryStringの受け渡し var QueryString; if (location.search.length > 1) {  QueryString = location.search.substr(1); } // 写真の変更 function ChangeImage(PhotoNumber) { document.images["photo"].src = "../img/photo/" + PhotoNumber + ".jpg"; }

質問者が選んだベストアンサー

  • ベストアンサー
  • q-ue
  • ベストアンサー率75% (12/16)
回答No.2

まとめると、 稼働中のサイトでは正しく動く(?が付く) ローカルはホスト側と同じフォルダ構成 ローカルでは?が付かない ローカルにダウンロードしたものをアップロードしても動作しない ローカルとホストで違いは、文字コードの変更ぐらい ということですね。 ローカルファイルをアップロードしても動作しなかったことを考えると、文字コードの変換が正しくいかなかったのかもしれません。 もう一度正しく動くファイルをダウンロードして、文字コードを変更せずに試してみてください。

makkie-goo
質問者

お礼

再度、正しく動くファイルをダウンロードしなおしをして、文字コードを変更せずに試してみました。 無事動作させることが出来ましたので、今度は、新規にテキストファイルへそのデータをコピーし、文字コードをUTF-8に変更して保存、無事動作を確認しました。 TeraPadを使って編集を行っているのですが、既存のファイルをいくらUTF-8で保存しても、UTF-8として実際保存がうまくされていなかったようです。(ブラウザのエンコードを確認しても、UTF-8になっているのですが…) Javascriptは、HTMLとJavascriptの両方が同じ文字コードでないと動作しないと言う事も勉強できました。 初歩的で情報も少ない中でご回答いただきました、q-ueさん、ありがとうございました。

その他の回答 (1)

  • q-ue
  • ベストアンサー率75% (12/16)
回答No.1

情報が少なくて判断できません。 そのHTMLはiframeを使用していますか? 画像上のリンクをクリックするとページのアドレスが変わりますか(末尾に?...が追加されますか)? ../img/photo/(番号).jpg というファイルは存在していますか? id または name が"photo" のimg 要素がHTML に存在していますか?

makkie-goo
質問者

補足

慌てていて詳しい説明を入れ忘れていました。 質問に回答します。 HTMLは、iframeは使用していません。 画像上のリンクをクリックしても、ページのアドレスは変わりません。 今現在問題なく稼働しているWebサイトでも確認してみましたが、htmlの後ろに「?」が入り、その後ろに画像の開始番号が入っています。 (8枚ある場合、0101~0108と番号があり、アドレスは「….html?0101」になっています。) imgフォルダの中にphotoと言うフォルダもあり、0101.jpgからきちんと画像があります。 当該Javascriptがjsと言うフォルダにおかれているので、../img/photo/で間違いないです。 idとnameがphotoのimg(spacer.gif)がhtml上に存在しています。 「画像上のリンク」は、クリッカブルマップで配置しています。 右側の画像のリンクをクリックすると、左側の画像が入れ替わると言う動きです。 ホスト側と同じフォルダ構成にしているのですが、ローカルにダウンロードすると動きません。 そのローカルにダウンロードしたものをホストにアップロードしても動作しません。 ローカルとホストで違うとすれば、文字コードを「Shift_JIS」から「UTF-8」に変更した事でしょうか。

関連するQ&A

  • JavaScriptのことで教えて!

    1シートにJavaScriptを2つ使うことは出来ないのでしょうか? 画像が点滅するJavaScript と画像が入れ替わるJavaScript 両方を1シートで使用できませんか? この部分は入力できるのですが <SCRIPT language="JavaScript"> <!-- num = 2; // 入れ替える画像の枚数(最初の画像も含める) nme = "../img/img" // 画像のディレクトリとファイル名の数字と拡張子より前の部分 exp = "jpg" // 拡張子 cnt = 0; function changeImage() { cnt++; cnt %= num; document.img.src = nme + cnt + "." + exp; } //--> 勿論、点滅のJavaScriptも記載済みです。 ところが、 <BODY onload="blink()"> <BODY bgcolor="#ffffff" onLoad="setInterval('changeImage()',1000)"> このように並列して書くとエラーになります。 2つのavaScriptは使用できないのでしょうか? 精通されている方、居られましたら宜しくご指導願います。

  • javascriptの問題数を増やしたいです。

    javascriptの出題問題数を増やしたいです。 どこの数値を変更すればいいですか? 今10問までですけれども例えば40問まで増やしたいとすればどの数値を変更すればいいですか? window.onload = function(){ var data = location.href.split("?")[1]; var nowQ = data.substr(0,2); var allQ = data.substr(2,2); var okQ = data.substr(4,2); var nowA = data.substr(6,2); 参考URL https://www.kuuneruch.com/javascript01/ よろしくお願いします。

  • 画像切り換えでTransitionをかけたい。

    フリーソースでの応用なのですが 次のJavaScriptで画像の自動切り換え表示に Transitionをかけたいのですが、知識がなくてわかりません。 アドバイスをお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- var num = 1; function timer () { if(document.img.complete) { document.img.src = "photo" + num + ".jpg"; num++; if(num > 5) num = 1; } setTimeout("timer()", 1000); } //--> </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> function viewSource(){ location = "view-source:" + window.location; } </SCRIPT> ----------- <BODY onload="setTimeout('timer()', 2000);"> <IMG SRC="photo1.jpg" NAME="img"> -----------

  • Javascriptで通常の文字リンクを作りたい?

    GetHTMLW ​http://www.vector.co.jp/soft/win95/net/se077067.html​ などのホームページデータ ダウンロード ソフトで、ホームページのデータを丸ごとコピーされないように、 ホームページ内のリンクをJavascriptにしたいのですが、自分が書いたコードがちゃんと動作しません。どこが悪いのでしょうか? 動作やカラーの反転は、できるだけ通常のアンカータグを使用したHTMLリンクのようにしたいです。 2種類のコードを書きました: 1つ目: <a href="JavaScript:location='../jtest/page_b.html';">ページBへ</a> 2つ目: <a href="javascript:;" onClick="location='../jtest/page_b.html';">ページBへ</a> 上記よりもっとよい書き方をご存知でしたら、お教え願えれば幸いです。 リンクをJavascriptにすると検索エンジンにも引っかからないそうですが、知人しか見ないサイトなので、そちらは問題ありません。 よろしくお願いします。

  • 画像を入れ替えたい

    こんにちは。初心者であまりよく分からないので教えていただきたいのですが・・・下記のプログラムで画像を入れ替えるというのをやりたいのですが、ずっと入れ替え続けるのではなくて、1枚目から2枚目に入れ替えるだけで終わらせたいのです。for文を使えばいいとのかなと思うのですが、どこにforを入れたら良いのか分かりません。あるいはもっと簡単なやり方があるのでしょうか・・・。急いでやらないといけないので教えていただけたらと思います。どうぞよろしくお願いします。 <HTML> <HEAD> <TITLE></TITLE> <SCRIPT language="JavaScript"> <!-- // 画像を一定間隔で入れ替える // img0.jpg,img1.jpgなどの数字が続いたファイルを複数用意します。 num = 2; // 入れ替える画像の枚数(最初の画像も含める) nme = "img/img" // 画像のディレクトリとファイル名の数字と拡張子より前の部分 exp = "jpg" // 拡張子 cnt = 0; function changeImage() { cnt++; cnt %= num; document.img.src = nme + cnt + "." + exp; } //--> </SCRIPT> </HEAD> <BODY bgcolor="#ffffff" onLoad="setInterval('changeImage()',1000)"> </BODY> </HTML>

  • JavaScriptで取得した値について

    初めまして、Etizenと言います。 早速質問なのですが、JavaScriptで 例えば、 <SCRIPT LANGUAGE="JavaScript"> <!--  var QS = new Array;  if (location.search.length > 1)  {   var m_Array =    location.search.substr(1).split("&");    for (idx in m_Array)    { QS.push(m_Array[idx].split("="));    }  } //--> </SCRIPT> という、配列でデータを取得した場合にこれを、HTMLの <input type="text" name="STFCD" Value> のValueの中に仕込むことは可能でしょうか? よろしくお願い致します

  • オンマウスで画像の入れ替え

    <script language="JavaScript" type="text/JavaScript"> <!-- function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_swapImage() { //v3.0 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> </script> <body onLoad="MM_preloadImages('./photo/<!--photo1-->','./photo/<!--photo2-->','./photo/<!--photo3-->','./photo/<!--photo4-->')"> <table width="0" border="0" cellspacing="0" cellpadding="3"> <tr> <td rowspan="2" align="center" valign="top"> <table width="0" border="0" cellspacing="0" cellpadding="3"> <tr> <td colspan="2"><img src="./photo/<!--photo1-->" width="240" height="320" name="big_photo"></td> </tr> <tr align="center"> <td><img src="./photo/<!--photo1-->" width="100" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('big_photo','','./photo/<!--photo1-->',1)"></td> <td><img src="./photo/<!--photo2-->" width="100" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('big_photo','','./photo/<!--photo2-->',1)"></td> </tr> <tr align="center"> <td><img src="./photo/<!--photo3-->" width="100" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('big_photo','','./photo/<!--photo3-->',1)"></td> <td><img src="./photo/<!--photo4-->" width="100" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('big_photo','','./photo/<!--photo4-->',1)"></td> </tr> </table> 以前、ホームページ作成会社に頼んで作成した、WEBサイトがありますが、今は廃業されて連絡がとれません。 スキン式の写真ギャラリーCGIなのですが、スキンファイルのソースが上記ソースで、 <td colspan="2"><img src="./photo/<!--photo1-->" width="240" height="320" name="big_photo"></td> の部分に大きな1枚の画像があり、小さな画像4枚の部分をオンマウスすると画像が入れ替わります。 この小さな画像4枚の部分は、元画像の小さなサムネイル画像が表示されますが、これをカスタマイズしたいのですが、ネットで 探した限りではいいサンプルが見当たりません。 カスタマイズ内容は他の画像4枚(NO1.gif、NO2.gif・・・)と用意して、そこの画像をオンマウスした場合にビック部分に画像を 表示させたいのですが・・・・ わかる方いらしゃいましたら、できれば教えてください。

  • Javascriptで自動更新

    あるページを10秒に一度、自動で更新させたいのですがなにかよい方法はありませんか? このサイトで見かけたスクリプトを試してみても動作しませんでした;; <script language="JavaScript"> <!-- min=60; setTimeout('reload()', min*1000); function reload() { location.href=location.href; } //--> </script> Javascriptで実現する方法があれば教えてください。

  • 画像のソースを変える(JavaScript)

    <html> <head> <script language="javascript"> <!-- function Karasu() { document.forms[0].elements[0].value = "からす"; }// --> </script> </head> <body onload="Karasu()"> <form> <input type="text"><br> </form> </body> </html> ソースの「document.forms[0].elements[0].value」のように画像のソースを書き換えて違う画像を表示させることはできませんか? name属性を使わずにお願いします。 また、他のもっと良い考え方で画像を動的に変更する方法があれば教えてください!

  • JavaScriptでボタンをクリックすると画像が変わる設定をするには?

    たとえば、1.gif - 2.gif , 3.gif - 4.gif,5.gif - 6.gif,7.gif - 8.gif,9.gif - 10.gif の画像をついにしてボタンとして利用するとします。 最初に表示されるボタンは 1.gif , 3.gif ,5.gif , 7.gif , 9.gif の5つです。 JavaScriptで1.gifボタンをクリックしたら、2.gifボタンに画像が変わり、 3.gifボタンをクリックしたら、4.gifボタンに画像が変わるように(残りの画像も同様)したいと 考えています。この時、1.gif , 3.gif ,5.gif , 7.gif , 9.gifのいずれかのボタンがクリックされた 時点で、直前に変更していた 2.gif , 4.gif ,6.gif , 8.gif , 10.gifのいずれかのボタンは最初のボタン の状態に戻したいと考えています。 どのようにJavaScriptを記述すると可能なのでしょうか。 1つのボタンをクリックすると別の画像に変わる方法は色々なHPを参考に↓の記述でなんとかできたのですが、 複数のボタンになるとどのように修正していけばうまくいくのかわかりません。 <HTML> <HEAD> <TITLE></TITLE> <SCRIPT language="JavaScript"> <!-- imgnum=1; function changeImage(){ if(imgnum==1){ document.myimg.src="2.gif"; imgnum=2; }else if(imgnum==2){ document.myimg.src="1.gif"; imgnum=1; } } // --> </SCRIPT> </HEAD> <BODY> <CENTER> <A href="javascript:changeImage()"><IMG src="1.gif" name="myimg" border=0></A> </CENTER> </BODY> </HTML> 質問がややこしくてすみません。 方法をお分かりの方はどなたか教えてください。よろしくお願いします。

専門家に質問してみよう