リロードしても更新データが残るようにする方法

このQ&Aのポイント
  • リロードしても更新データが残る方法を教えてください。
  • ジャバスクリプトを使用して画像を切り替える機能を実装しましたが、リロードすると元の状態に戻ってしまいます。
  • データベースなどの知識と技術が必要なのでしょうか?
回答を見る
  • ベストアンサー

リロードしても更新データが残るようにする方法教えて

ジャバスクリプトについてはまったくの素人です。 ジャバスクリプトを使って ラジオボタンで表示する画像をかえる機能を下記サイトから見つけました。 http://www.sky.sannet.ne.jp/masapine/java_gazou.html この機能を同一Webページ内で繰り返して表示するやり方を最近OKWaveでご指南頂き、この 件については解決しました。 http://okwave.jp/qa/q6811231.html (ありがとうございます。) しかしながら、このページをリロードすると、元の状態に戻ってしまいます。 先のサイトで言えば「ねこ」を選んでもリロードするとデフォルトの「パンダ」に戻ってしまいます。 長くなりましたが、今回の質問は、これを、更新したデータがリロードしても残るようにしたいのですがその方法を教えて頂けないでしょうか。 やはりデータベースなどの知識と技術が必要でジャバスクリプトだけではできない問題なのでしょうか? どなたか教えて頂ければ幸いです。 宜しくお願いします。

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

  • ベストアンサー
  • mikemike7
  • ベストアンサー率87% (97/111)
回答No.1

>その方法を教えて頂けないでしょうか。 普通なら、クッキーを利用すると思います。 とはいえ、PHPなどで初期のチェックとか初期画像は操作することが多いと思いますが。 JavaScriptとクッキーだけでも実装可能なので、 おそらく前回のベストアンサーさんのをベースに作っておられると予想して、そのソースを元に無理やり改造してみました。 // ここからJavaScript部 <script type="text/javascript"><!-- imgck = new Array(); function Gazou(mysrc,num){ document.myIMG[num].src=mysrc; imgck[num] = mysrc; var ckbody = ""; for (var key in imgck) { if(ckbody != ""){ckbody += ":";} ckbody += key + "-" + imgck[key]; } document.cookie="imgSelect="+ckbody+"; path=/; expires=Tue, 31-Dec-2030 23:59:59;"; } function image_select(){ var ckarr = new Array();var arr = new Array(); if(document.cookie){ ckarr = document.cookie.split("; "); for(var i = 0; i < ckarr.length; i++ ){ if(ckarr[i].indexOf('imgSelect=') === 0){ arr = ckarr[i].substr(10,ckarr[i].length).split(":"); break; } } ckarr = new Array(); for(var i = 0; i < arr.length; i++){ ckarr = arr[i].split("-"); imgck[ckarr[0]] = ckarr[1]; if(document.myIMG[ckarr[0]] != null){ document.myIMG[ckarr[0]].src=ckarr[1]; } if(document.imgForm[ckarr[0]] != null && document.imgForm[ckarr[0]].myRB.length){ for(var ii = 0; ii < document.imgForm[ckarr[0]].myRB.length; ii++){ if(document.imgForm[ckarr[0]].myRB[ii].value == ckarr[1]){ document.imgForm[ckarr[0]].myRB[ii].checked = true; break; } } } } } } window.onload=image_select; --></script> // ここからHTML部 <center> <img name="myIMG" src="images/icons1.gif" border="0" width="32" height="32"> <br> <FORM name="imgForm"> <INPUT type="radio" name="myRB" onClick="Gazou(this.value,0)" value="images/icons1.gif" checked>パンダ <INPUT type="radio" name="myRB" onClick="Gazou(this.value,0)" value="images/icons2.gif">ペンギン <INPUT type="radio" name="myRB" onClick="Gazou(this.value,0)" value="images/icons3.gif">ねこ <INPUT type="radio" name="myRB" onClick="Gazou(this.value,0)" value="images/icons4.gif">ねずみ <INPUT type="radio" name="myRB" onClick="Gazou(this.value,0)" value="images/icons5.gif">ライオン </FORM> </center> <center> <img name="myIMG" src="images/icons1.gif" border="0" width="32" height="32"> <br> <FORM name="imgForm"> <INPUT type="radio" name="myRB" onClick="Gazou(this.value,1)" value="images/icons1.gif" checked>パンダ <INPUT type="radio" name="myRB" onClick="Gazou(this.value,1)" value="images/icons2.gif">ペンギン <INPUT type="radio" name="myRB" onClick="Gazou(this.value,1)" value="images/icons3.gif">ねこ <INPUT type="radio" name="myRB" onClick="Gazou(this.value,1)" value="images/icons4.gif">ねずみ <INPUT type="radio" name="myRB" onClick="Gazou(this.value,1)" value="images/icons5.gif">ライオン </FORM> </center> // ここから説明 変更となった部分は、 1.FORMにnameをつけます。   すべての選択肢のFORMを<FORM>から<FORM name="imgForm">にしてください。 2.イメージ画像をvalue値に変更します。   <INPUT type="radio" name="myRB" onClick="Gazou('images/icons1.gif',0)">パンダ   形式から   <INPUT type="radio" name="myRB" onClick="Gazou(this.value,0)" value="images/icons1.gif">パンダ   形式にします。 ソースをベースに改造したので、もっとスマートな方法もあるかと思いますが、 IE6~8、FireFox、クローム、Opera、Safariで正常稼動確認済みです。 // 注意点 投稿前に気づいたけど、区切り文字を”-”としたので、画像フォルダ、または、画像名に-が入っている場合は正常に稼動しません^^; 入っている場合、手直ししますので、言ってください デモ: http://okwave.xrea.jp/javascript/test6820047/

paopaotakeshi
質問者

お礼

できました!すごいです。私には正直このコードの意味はレベルが高く理解できませんが、完璧です。このようなレベルになるには沢山の経験をつまれているのだと思います。しかもとても親切に私のような素人にもできるようにわかり易く解説及びサンプルまで作っていただき本当に助かりました。回答いただいた文章と作成頂いたサンプルのコードを見ながら自分の作成したHTMLのページに真似しながら手を加えたらできてしまいました。ここでは言い切れないほど感謝します。本当にありがとうございます。

関連するQ&A

  • ジャバスクリプト機能の繰り返し表示の仕方を教えて!

    ジャバスクリプトについてはまったくの素人です。 ジャバスクリプトを使って ラジオボタンで表示する画像をかえる機能を下記サイトから見つけました。 http://www.sky.sannet.ne.jp/masapine/java_gazou.html この機能を添付ファイルのように、同一Webページ内で繰り返して表示し使いたく、プログラムのソースをHTMLのbodyの中に繰り返しコピペしてみたのですが、機能しなくなってしまいます。 同一Webページ内に当該スクリプト1つであれば機能するのですが、2つ以上になると、すべて機能しません。表示するのには方法があるのでしょうか?それともこのようなことは不可能なことなのでしょうか? どなたかこの疑問にお答え頂ければ幸いです。宜しくお願いします。

  • 更新された情報を複数の人と共有する方法教えて下さい

    ジャバスクリプトについてはまったくの素人です。 ジャバスクリプトを使って ラジオボタンで表示する画像をかえる機能を下記サイトから見つけました。 http://www.sky.sannet.ne.jp/masapine/java_gazou.html またOKWave上でこれを連続してなお且つリロードしても更新した情報が変わらないようにする方法をご教示いただきました。(ありがとうございます。) 一回目の質問 http://okwave.jp/qa/q6811231.html 二回目の質問 http://okwave.jp/qa/q6820047.html この度、三回目の質問は、この更新された情報をアクセスする人、全員と共有できるようにしたいのですが可能でしょうか?現在は、このサイトにアクセスしたクライアント単一で行われた情報の更新をクライアントごとに管理できる形になっていますが、複数の人と同じ情報を管理することはできません。ジャバスクリプトで解決できる問題ではないと思いますが、どなたかアイデアをお持ちの方教えてください。 どうぞ、宜しくお願いします。

  • 画像をオンクリックで複数表示するには?

    ビルダー8で作成しています。 画像3枚を【1】【2】【3】といった数字にクリックで指定の場所に表示したいのです。 それを1ページに複数設置したいのですが、どのようにしたら設置できますでしょうか? http://www.sky.sannet.ne.jp/masapine/java_gazou.htmlのサイトを参考に設置したのですが、1つだけの設置の場合は動作したのですが、2つ目を設置したら動作しなくなりました。 改造ソースやもし良い方法があったら教えてください。

  • 子フレームの自動リロードは可能でしょうか?

    フレームで2つに分割されたページ(frameset.htm)があるとします。 そのうち、一つのフレーム(menu.htm,name=MENU)はメニューとして常に表示されています。 もう一つのフレーム(name=MAIN)にはその時々でいろんなページが表示されます。 仮に、例えば60秒おきとかで、MAINにその瞬間に表示されているページを、 frameset.htmもmenu.htmもリロードせずに、 自動的にリロードさせることは出来ますか? MAINに表示させるページは閲覧者により手動でも変えられるようになっているため、リロードの瞬間にどのページが表示されているかは不定です。 なお、MAINに表示させるページ内に、Java ScriptやMETAタグは追加できない条件です。

  • サイトのリロード間隔を選択できるようにしたいのですが?

    java初心者です。 以下の記述でページ全体を一定間隔にてリロードを繰り返させています。★★★★★の部分がリロード間隔となりますが、その部分を1分、5分、リロード無し、といったようにボタンで選べるようにしたいのですが、何か方法はありますでしょうか?よろしくお願いしますm<_ _>m <script type="text/javascript" language="javascript"> setTimeout("location.reload(true)",★★★★★); </script>

  • HPビルダーver6でのフォーム確認ページ作成方法を教えて下さい。

    環境:os win me ビルダーver6でアンケート等のフォームページを作成して、見てくれた人から回答してもらう際に、入力のあった項目だけを確認ページに表示させ、それをメールで送信しもらいたいのですが、どの様にすればよいかどなたか教えて下さい。javaスクリプトを使えば出来そうなのですが、あまり知識がありません。ビルダーの中にもjavaスクリプトの機能がある様なのですが、ビルダーのガイドブックを色々見ましたが詳しく載ってませんでした。できれば、私の様な素人でも解かりやすいjavaスクリプトのガイドブックやjavaスクリプトの例文が載っているサイトのURLを教えて下さい。

  • 自動リロード機能

    某チャットCGIを利用しています。 そのチャットには現在入室者をSSIで別ページに表示する機能があります。 しかし、この機能だけでは、画面をリロードしないと最新情報になってくれません。 これをどうにかして常に最新情報を表示したいです。 「JavaScript 自動 リロード」で検索すると、ページ全体のリロードと言うの見つかりましたが、一部と言うのが発見できませんでした。 方法があれば教えてください。

  • リロード毎に表示画像を変える

    html内に記述するスクリプトで、サーバーに用意したいくつかの画像の中からリロードするごとにランダムで表示される画像を変えるスクリプトを教えて下さい。 または、その解説が載っているサイトなどご存じでしたらそれを教えてもらえますでしょうか。 よろしくお願いします。

  • 大きさを指定して新しいウィンドウを開く方法

    ネットでいくつかサイトを回ってみましたが、いまいち、解りにくかったり、ちょっと違う。という感じですので、よろしくお願いします。 特に参考にさせて頂いたのは、http://www.sky.sannet.ne.jp/masapine/java_top.htmlの ボタンで小さなウィンドウを表示させよう。や 画像をクリックして小さなウィンドウを表示させよう。といったところで、ほとんど、そのままの事をやりたいのですが、実際には、文字に小さなウィンドウを開くリンクをはりたいのです。 その他にも、ホームページビルダーのサイトを見たりしたんですけど、どこがどう解らないのかも、解らない情けない状態です。 毎度のことで申し訳ありませんが、よろしくおねがいします。

    • ベストアンサー
    • CSS
  • リファラーを変えずに自動的にリロードする方法はないでしょうか?

    リファラーを変えずに自動的にリロードする方法はないでしょうか? サイトトップのリンクから遷移した先のレンタルBBSを30秒おきにリロードしてチェックしたいのですが、フレームを使って <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <META HTTP-EQUIV="Refresh" CONTENT="30"><TITLE>リロード</TITLE> </head> <body><FRAMESET COLS="0,*" TITLE="リロード"> <FRAME SRC="http://okwave.jp/" NAME="Dummy" SCROLLING="auto" FRAMEBORDER="0" NORESIZE TITLE="ダミー"> <FRAME SRC="http://okwave.jp/" NAME="Main" SCROLLING="auto" FRAMEBORDER="0" TITLE="内容"> <BODY> といったやり方をした場合、トップページからどこか別ページに遷移した状態でページがリロードされると、表示されているページは元のトップに戻ってしまいます。 それならフレームセットをトップページからの指定にせずに最初からBBSのURLを入れて <FRAME SRC="http://okwave.jp/" NAME="Dummy" SCROLLING="auto" FRAMEBORDER="0" NORESIZE TITLE="ダミー"> <FRAME SRC="http://*********.jp/BBS.php" NAME="Main" SCROLLING="auto" FRAMEBORDER="0" TITLE="内容"> としておけばいいとお思いかもしれませんが、このBBSはリファラーを検出しているので、このような方法では「トップページからアクセスしていないから表示不能」ということになってしまうのです。 このため、一旦トップページからBBSに入った状態でBBSのフレームだけ定期的にリロードさせたいのですが、そういったJavascriptでもどこかで公開されていないでしょうか? ちなみに、私はJavascriptは簡単な文字数制限や文字種制限や、チェックボックスがチェックされたらテキストボックスを有効にするくらいしか自力で書くことが出来ず、他には既存のスクリプトを拾ってきて例えばonClickやonFofusなどで作動させるくらいのことしか出来ないので、自分でスクリプトを組むためのアドバイスを頂いても殆ど理解できません。 「このサイトにあるこのスクリプトのこの部分を書き換えれば出来る」程度のご回答を頂くことは出来ないでしょうか? どうかよろしくお願い致します。

専門家に質問してみよう