質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1845閲覧

JavaScript & localStorage

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/12/06 22:33

###前提・実現したいこと
JavaScriptを使ってアンケートを作っています。localStorageを使って質問の答えを表示したいのですが、コードの書き方がよくわかりません。また、ページを訪れた回数の表示が必要なのと、アンケートの回答は一人一回のみにしたいです。よろしくおねがいします。
###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード

<body> <form> <h2>Questionnaire</h2> <table border=2> <caption>Which Fruits do you like?</caption> <tr> <td><input type="radio" name="Fruits" id="fruits0" value=""> Apple </td> </tr> <tr> <td><input type="radio" name="Fruits" id="fruits1"value=""> Orange </td> </tr> <tr> <td><input type="radio" name="Fruits" id="fruits2"value=""> Others: <textarea name="comment" style="width:500px; height:20px;"></textarea> </td> </tr> </table> <script >DisplayVisits();</script> <form> <input type="button" value="GO!" id="countButton" onclick="disabled = true;" > <input type="button" value="Result" id="showResult" onclick="disabled = true;"> </form> <script> window.onload = function(){ document.getElementById("countButton"); var textArea = document.getElementsByName('Fruits')[0];

var value = localStorage.getItem('Fruits');
if(value){
Fruits.value = value;
}
}

function saving(){
var select = document.getElementsByName('Fruits')[0];
localStorage.setItem('Fruits', select.value);
}
</script>

<div id="counter"></div> <button id="reset">Reset</button> <script> var n = localStorage.getItem('on_load_counter'); if (n === null) { n = 0; } n++; localStorage.setItem("on_load_counter", n); document.getElementById('counter').innerHTML = "This page is visited " + n + " times."; function reset_counter() { localStorage.removeItem('on_load_counter'); } document.getElementById('reset').addEventListener('click', reset_counter); </script>
</body>

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/07 02:54

アンケートの結果を表示したいのですが、このコードでは表示ができません。何が間違っているのかがわからないのです。よろしくお願いします。
toutou

2016/12/07 03:50

コードは質問編集をして<>みたいなのがあるので、それに入れてください。右の画面で灰色になったら成功です。DisplayVisitsが行方不明だったり、ボタンが使用禁止になってたり仕様がよくわかりません。
Lhankor_Mhy

2016/12/07 04:05

『このコードでは表示ができません』とありますが、具体的には何が起きていますか? エラーメッセージなどをご提示ください。
kei344

2016/12/07 04:25

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答2

0

localStorageの機能の制約のため、一般的なアンケートのシステムを作ることは原理的に出来ません。

<理由>
localStorageは、ブラウザにデータを保存するための仕組みです。
localStorageのデータは、他のマシン(サーバや、他のユーザがブラウザを使っているPC等々)から読み書きすることが出来ません。

サーバ(S)と、アンケートのユーザが使っているマシンがあるとしましょう。
ブラウザはそれぞれのマシンで個別に動作します。
そして、JavaScriptのプログラムは、それぞれのブラウザで個別に動作します。

ある人がマシンAのブラウザaで、アンケートのフォームに記入したら、その内容をlocalstorageを使ってブラウザaに保存する事は可能です。
でも、そのデータにサーバがアクセスして、アンケート結果を取りまとめる事は出来ません。localstorageに、外部からのアクセスを提供する機能が無いからです。

サーバ側にCGIプログラムを設け、ブラウザはFormデータをサーバに送って、結果をもらう、という一般的な構成でシステムを作るのが素直ですし、大量の成功した前例があるので参考例が豊富です。

投稿2016/12/07 05:50

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

自分で回答したアンケート結果を自分だけが確認すればよいという運用なのでしょうか?
あまり意味がないように思うのですが、ちがったらスミマセン

サーバー側に集積して分析する必要があるならサーバー側のプログラムやDBなどが
必要になると思います。状況を補足されるとよろしいかと思います。

投稿2016/12/07 03:31

yambejp

総合スコア114581

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/07 03:40

自分の回答を自分で見られれば大丈夫なんです。学校の課題で提出しなければなりません。。。
yambejp

2016/12/07 04:41

なるほど、とりあえずgoボタンを押したときにsavingをよぶこと またラジオボタンのからのvalueにAppleやOrangeをいれること otherだったときの処理をいれることで保存はできると思います 呼び出しについてはresultボタンをおしたときに所定の箇所に呼び出した localstrageデータを表示してやることです またdisableが設定されているのでresetボタンをどう活用するか仕様を固めてください なおページをおとずれた回数はページを開く度にlocalstarageを更新して表示してください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問