以下スクリプト
<form method="post">
<textarea id="main_txt" cols="80" rows="30"></textarea>
<input type="submit" value="送信"/>
</form>
<input type="button" value="削除" id="del"/>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
window.onload = function() {
// メモの読み込み
var body = localStorage.getItem("memo");//strageに保存されたメモ
var date_time = localStorage.getItem("date_time");//strageに保存された日時
if (body != null) {
$('#main_txt').val(body);
$('#msg_div').text(date_time);
}
};
//削除ボタンを押したらストレージ削除
$("#del").click(function () {
localStorage.clear();
window.location.reload();
});
//送信ボタンを押したら、ストレージを保存
$("form").submit(function() {
localStorage.setItem("memo", $('#main_txt').val());
localStorage.setItem("date_time", new Date());//保存日時
});
</script>
「localStorage からの getItem() が null を返す」、というところだけに絞って書きます。
質問のコード、ほぼ、そのままの以下のコードを、ローカルの LAN にたててある apache で試してみました。
<html> <body> <form method="post"> <textarea id="main_txt" cols="80" rows="10"></textarea> <input type="submit" value="送信"/> </form> <input type="button" value="削除" id="del"/> <p> msg_div: <span id="msg_div"></span> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> <script type="text/javascript"> window.onload = function() { // メモの読み込み var body = localStorage.getItem("memo"); //strageに保存されたメモ var date_time = localStorage.getItem("date_time"); //strageに保存された日時 if (body != null) { $('#main_txt').val(body); $('#msg_div').text(date_time); } }; //削除ボタンを押したらストレージ削除 $("#del").click(function () { localStorage.clear(); window.location.reload(); }); //送信ボタンを押したら、ストレージを保存 $("form").submit(function() { localStorage.setItem("memo", $('#main_txt').val()); localStorage.setItem("date_time", (new Date()).toString()); //保存日時 }); </script> </body> </html>
FF5.0 と、FF3.6.23 で試してみたんですが、ちゃんと setItem() で保存したデータを、
getItem() で取得できるんですよね。
質問にあげたコードは、何かのコードから抜粋したものだと思うのですが、
抜粋した部分以外に問題がある、ということは考えられませんか?
HTML5 の仕様では、localStorage にオブジェクトを突っ込めることになってますが、文字列しか保存できない実装が多いようです。
明示的に文字列として保存してみたらどうでしょうか?
localStorage.setItem("date_time", (new Date()).toString()); //保存日時
確かに、文字列しか入れないですね。
なるほど、全て文字列に変換してからつっ込めばいいかもしれないですね。
$(function(){
//この中で$を使うべきです。
});
個人的にはtoString()よりもJSONのほうが好きです。
localStorage.setItem("date_time", Date.now()); //now()はstring型 console.log(Date(localStorage.getItem("date_time"))) //Dateオブジェクトに戻す
「localStorage からの getItem() が null を返す」、というところだけに絞って書きます。
質問のコード、ほぼ、そのままの以下のコードを、ローカルの LAN にたててある apache で試してみました。
<html> <body> <form method="post"> <textarea id="main_txt" cols="80" rows="10"></textarea> <input type="submit" value="送信"/> </form> <input type="button" value="削除" id="del"/> <p> msg_div: <span id="msg_div"></span> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> <script type="text/javascript"> window.onload = function() { // メモの読み込み var body = localStorage.getItem("memo"); //strageに保存されたメモ var date_time = localStorage.getItem("date_time"); //strageに保存された日時 if (body != null) { $('#main_txt').val(body); $('#msg_div').text(date_time); } }; //削除ボタンを押したらストレージ削除 $("#del").click(function () { localStorage.clear(); window.location.reload(); }); //送信ボタンを押したら、ストレージを保存 $("form").submit(function() { localStorage.setItem("memo", $('#main_txt').val()); localStorage.setItem("date_time", (new Date()).toString()); //保存日時 }); </script> </body> </html>
FF5.0 と、FF3.6.23 で試してみたんですが、ちゃんと setItem() で保存したデータを、
getItem() で取得できるんですよね。
質問にあげたコードは、何かのコードから抜粋したものだと思うのですが、
抜粋した部分以外に問題がある、ということは考えられませんか?
ありがとうございます。勘違いしていまして、ローカル環境ではなく、サーバーに置いたところ、動作することが確認できました。
Operaはローカルでも動きますが、FFはローカルでは動かないようでした。勉強不足ですね、ありがとうございました。
ありがとうございます。勘違いしていまして、ローカル環境ではなく、サーバーに置いたところ、動作することが確認できました。
Operaはローカルでも動きますが、FFはローカルでは動かないようでした。勉強不足ですね、ありがとうございました。