HTMLローカルストレージへの保存方法とは?

このQ&Aのポイント
  • HTMLのローカルストレージを利用して、宛先、件名、お名前、預かり金額を保存する方法を教えてください。
  • 以下のプログラムを使用して、宛先、件名、お名前、預かり金額をメーラーから送信する前にローカルストレージに保存する方法を教えてください。
  • HTMLのローカルストレージを使って、宛先、件名、お名前、預かり金額を保存する方法を教えてください。
回答を見る
  • ベストアンサー

HTML ローカルストレージへの保存

お世話になります。 ちょっとした会の幹事を一年間やることになりました。(余談) 以下のプログラムで宛先、件名、お名前、預かり金額をアンドロイド携帯のローカルストレージ に保存しておきたいのですが、 どのようにすればよいでしょうか? ご指導お願いいたします。 以下のプログラム(?)は宛先などを記入して、メーラーから送信するといったものです。 <form name=mailform> 宛先:<input name=to type=text value="info@example.com"><br> 件名:<input name=subject type=text value="hello"><br> お名前:<input name=name type=text value="namae"><br> 預かり金額:<input name=azukari type=text value="jyusyo"><br> <button type=submit>送信</button> </form> <script>window.addEventListener('load',function(ev){ document.forms['mailform'].addEventListener('submit',function(submitEv){ submitEv.preventDefault(); var form = submitEv.target; var to = form.elements['to'].value; var subject = form.elements['subject'].value; var name = form.elements['name'].value; var addr = form.elements['addr'].value; var body = "お名前:"+ name + "預かり金額:" + azukari if (!to) return; var url = "mailto:" + to + "?subject=" + subject + "&body=" + body; var a = form.appendChild(document.createElement('a')); a.href = url; a.click(); form.removeChild(a); }, false); }, false)</script> ※このプログラムも以前こちらで質問して教えていただいたものです。 素人の為、プログラムの説明などはうまくできないと思いますが、ちょっと勉強しましたので、 わかる範囲で回答に必要な質問には答える覚悟です。 よろしくお願いいたします。

  • HTML
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
noname#247307
noname#247307
回答No.1

ローカルへの保存といっても、テキストファイルのような形でSDカードに保存するようなやり方はちょっと難しいでしょう。 そもそもWebに搭載されているJavaScriptというのは、ローカル環境へのアクセスを厳しく制限して作られています。だって、スクリプトでファイルを保存できるようになっていたら、例えばシステムの起動ディレクトリにウイルスファイルを保存したり、システムのファイルを書き換えたりできるってことでしょう? それはあまりに危険です。 というわけで、JavaScriptのスクリプトをちょっと書き換えてローカルに保存できるようにする、という考え方は捨てて下さい。方法としては、以下の3つのいずれかがいいと思います。 1. サーバーに保存する サーバーを立ててそこにデータを送信し、保存する。そこからデータをダウンロードすることは可能です。このやり方なら、ローカルにファイルとして保存できます。ただし面倒。 2. ローカルストレージを使う JavaScriptでは、テキストに名前をつけて保存しておけます。こんな感じです。 localStorage.setItem("名前", 保存するテキスト ); これで保存したものは、ブラウザを終了した後も保存して残ります。消えたりはしません。取り出すときはこうします。 var 変数 = localStorage.getItem("名前"); これで、指定した名前で保存したテキストが取り出せます。テキストを取り出すためのページを作って、そこにアクセスして表示するようにすれば便利でしょう。個人的には一番てっとり早くておすすめ。 3. テキストを表示して手作業で保存する 新しいページを開いてテキストを表示し、それを手作業で保存する、というやり方はあるでしょう。Android 4.0以降なら、オフライン用に保存できるので、Webページとして保存しておくというやり方ができます。例えば、こんな感じ。 var newwin = window.open("", ""); newwin.document.open(); newwin.document.write( 表示するテキスト ); newwin.document.close(); これでテキストを表示したページが開かれますから、それを保存すればいいでしょう。

namagage98
質問者

お礼

回答有難うございます。 2ローカルストレージを使うを試してみます。 いろいろ不安材料もあるようです。(ウイルスとかファイルの書き換えとか) 慎重にしなくてはならないようですね。 わたしの場合、 localStorage.setItem("宛先", ""); var to type= localStorage.getItem("宛先"); といった書き方で間違いないでしょうか? ご指導お願いいたします。

関連するQ&A

  • HTMLのinputタグ数が変わる場合のjavascript処理

    パターンA ~HTML~ <input type='text' name='a[]'> <input type='text' name='a[]'> ~JavaScript~ var n = document.form1.elements["a"][0].value ; var n = document.form1.elements["a"][1].value ; パターンB ~HTML~ <input type='text' name='a[]'> ~JavaScript~ var n = document.form1.elements["a"][0].value ; ---(1) パターンAではエラーが出ないのですが、パターンBでは(1)のところでエラーになってしまいます。 【elements["a"][0]】の部分を【elements["a"]】とすればエラーは出ません。 どうやら、inputタグが1つしかない場合は、Javascriptでは配列として認識しないようです。 できれば、inputタグが1つの場合でも複数の場合でも、同じJavascriptコードを使いたいのですが、何か良い方法はありますか?

  • HTMLをおしえてください。

    こちらはPC初心者です。 HTMLここまでつくりました。 名前 <INPUT TYPE="text" NAME="name"><br> ハンドルネーム <INPUT TYPE="text" NAME="name"><br> 好きな色は? <SELECT NAME="color"> <OPTION SELECTED>選んでください。</OPTION> <OPTION VALUE="red">赤</OPTION> <OPTION VALUE="blue">青</OPTION> <OPTION VALUE="yellow">黄</OPTION> </SELECT><br> 行きたい国は?<br> <INPUT TYPE="checkbox" NAME="usa" VALUE="on">アメリカ<br> <INPUT TYPE="checkbox" NAME="china" VALUE="on">中国<br> <INPUT TYPE="checkbox" NAME="france" VALUE="on">フランス<br> <INPUT TYPE="checkbox" NAME="germany" VALUE="on">ドイツ<br> 感想<br><TEXTAREA NAME="comment" ROWS="4" COLS="30"></TEXTAREA><br> <INPUT TYPE="submit" VALUE="送信"><INPUT TYPE="reset" VALUE="書き直し"> </FORM> </BODY> 送信ボタンをおすとアウトルックが起動するようにしたいです。 書き直しボタンを押すと全部リセットできるようにしたいです。 どうかご指導の方をよろしくおねがいします。

  • Javaで小数点第4までを処理したい。

    現在近似曲線を算出するプログラムを自作しています。 正確に算出するところまでは到達出来たのですが、最後に小数点以下が多すぎるので、小数点第四までに抑えたいです。 しかし、小数点を処理するようなプログラムを想定していなかったので、とても困惑しております。 私が作っているプログラムはこんな感じです。 <title>近似曲線プログラム</title> <body> <form name="Form1"> <font color="red">近似曲線用プログラム</font><br><br> ・X=<input type= "text" size="11" name="a"><input type= "text" size="11" name="b"><input type= "text" size="11" name="c"><br> ・Y=<input type= "text" size="11" name="e"><input type= "text" size="11" name="f"><input type= "text" size="11" name="g"><br>    <input type= "button" value= "近似曲線の数式を算出" onclick="keisan1()"><br><br> ・標本数=3<br><br> ・Xの平均値=<input type= "text" size="11" name="i"><br> ・Yの平均値=<input type= "text" size="11" name="j"><br><br> ・ΣXi<sup>2</sup>=<input type= "text" size="11" name="k"><br> ・ΣXiYi=<input type= "text" size="11" name="l"><br><br> ・a=<input type= "text" size="11" name="m"><br> ・b=<input type= "text" size="11" name="n"><br><br> 結果<br> ・y=<input type= "text" size="11" name="o">x+<input type= "text" size="11" name="p"> </form> <script language="JavaScript"> function keisan1(){ a = document.Form1.a.value-0; b = document.Form1.b.value-0; c = document.Form1.c.value-0; e = document.Form1.e.value-0; f = document.Form1.f.value-0; g = document.Form1.g.value-0; i=(a+b+c)/3; j=(e+f+g)/3; k=(a*a)+(b*b)+(c*c); l=(a*e)+(b*f)+(c*g); m=(l-3*i*j)/(k-3*(i*i)); n=j-m*i; o=m; p=n; document.Form1.i.value = i; document.Form1.j.value = j; document.Form1.k.value = k; document.Form1.l.value = l; document.Form1.m.value = m; document.Form1.n.value = n; document.Form1.o.value = o; document.Form1.p.value = p; } </script> </body> この中で、結果のoとpの部分を、小数点第四にまでに抑えたいのです、今現在では、小数点以下が10ケタ以上普通に出てしまいます。どちらも四ケタに抑えたいので、このプログラムに導入出来るような小数点処理のプログラムを知っている方がいらっしゃれば、是非丁寧に教えてほしいです。 よろしくお願いします。

  • チェックボックスの表示・非表示 動作

    はじめまして。 初めて掲示板を利用させていただきます。javascriptを勉強しまだ日が浅いのでご存知の方がいらっしゃれば教えてください。 今、チェックボックスを選択し選択した項目がアクティブになるようにしたいのですが、選択項目が重複すると以下のようになってしまいました。 A+AB=AB A+AB+E=ABE 個々までは問題なし。 既に全てのチェックが付いた上体で、ABCE-A=BCE となってしまい、 ABのチェックが入っていても、Aが消えてしまいます。 以下に現在のコードを張ります。 <script type='text/javascript'> <!-- function fchk2(obj, name) { var frm=obj.form; if(obj.checked==true) { /* チェックボックスが選択されている場合は、   テキストボックスを有効化(false)*/ for(var i=1; i<=3; i++){ frm.elements[name+i].disabled=false; } } else { for(var i=1; i<=3; i++){ /* 無効化する前に、入力値をクリア */ if(name=='t'){ /* テキストボックスの場合 */ frm.elements[name+i].value=''; }else{ /* チェックボックスの場合 */ frm.elements[name+i].checked=false; } /* 無効化(true) */ frm.elements[name+i].disabled=true; } } } //--> </script> <form name='form2' action='#'> <input type='checkbox' name='chk1' value='1' onclick='fchk2(this,"t")' checked>A<br> <input type='checkbox' name='chk1' value='1' onclick='fchk2(this,"t");fchk2(this,"b");' checked>AとB<br> <input type='checkbox' name='chk1' value='1' onclick='fchk2(this,"t");fchk2(this,"e");' checked>AとE<br> <input type='checkbox' name='chk2' value='1' onclick='fchk2(this,"c");fchk2(this,"e");' checked>CとE<br> <br> A<input type='text' name='t1' value='テキストA'><br> A<input type='text' name='t2' value='テキストB'><br> A<input type='text' name='t3' value='テキストC'><br> <br> B<input type='text' name='b1' value='テキストA'><br> B<input type='text' name='b2' value='テキストB'><br> B<input type='text' name='b3' value='テキストC'><br> <br> <input type='checkbox' name='c1' value='1'> 選択肢C<br> <input type='checkbox' name='c2' value='1'> 選択肢C<br> <input type='checkbox' name='c3' value='1'> 選択肢C<br> <br> <input type='checkbox' name='e1' value='1'> 選択肢E<br> <input type='checkbox' name='e2' value='1'> 選択肢E<br> <input type='checkbox' name='e3' value='1'> 選択肢E </form> よろしくお願いいたします。

  • 2つのサブミットボタンのある次のHTML

    <FORM METHOD='post' ACTION='…/x.pl?'> <INPUT TYPE='text' NAME='t'/><br/>; <INPUT TYPE='submit' VALUE='a' name='a'/><br/>; <INPUT TYPE='submit' VALUE='b' name='b'/><br/>; </FORM> どちらのボタンが押されてもx.plを呼び出すものの aボタンが押されたか bボタンが押されたか によりx.pl内の処理が少し違うようにしたいのですが x.plはどちらのボタンが押されたのか知る方法はあるのでしょうか?

    • ベストアンサー
    • CGI
  • HTMLでメールフォームを作成しました。

    HTMLでメールフォームを作成しました。 <table bgcolor="#fff0f5" border="1" width="500" summary="フォーム"> <tr><td> <FORM ACTION="mailto:aaa@bbb?subject=@問合せ" METHOD="post" ENCTYPE="text/plain"> <div class="red25centerB"> <img src="ccc.png" class="middle"> お問合せ </div> <br/> <div >・お名前:<INPUT TYPE="text" NAME="氏名" VALUE=""></div> <br/> <br/> <div>・Eメールアドレス:<INPUT TYPE="text" NAME="mail" SIZE="45" VALUE=""></div>  <br/> <br/> <div>・年齢: <br/> <br/> <INPUT TYPE="radio" NAME="tosi" VALUE="10">10代 <INPUT TYPE="radio" NAME="tosi" VALUE="20">20代 <INPUT TYPE="radio" NAME="tosi" VALUE="30">30代 <INPUT TYPE="radio" NAME="tosi" VALUE="40">40代 <INPUT TYPE="radio" NAME="tosi" VALUE="50">50代 <INPUT TYPE="radio" NAME="tosi" VALUE="60">60代以上 </div> <br/> <br/> <div>・ご質問内容等をお書きください <br/> <br/> <TEXTAREA NAME="問合せ" ROWS="7" COLS="55"></TEXTAREA></div> <br/> <br/> <div><INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="書き直す"></div> </FORM>   <img src="ddd.png" class="middle">一回だけ押してください。 </td></tr> </table> 一部のPCでは、送信をおすと、 このフォームは電子メールを使用して送信されます、このフォームを送信するとアドレスが受信者に公開され、暗号化されずに送信されます。 この操作は取り消しもできます。 と表示されます。そして、OKボタンを押しても、上手く送信されません。 なお、winxpや7で発生しているようですが、メーラーはどちらもoutlookですが、送信トレイにすらメールがありません。 解決方法を教えていただければ幸いです。

  • 見よう見まねで以下のように作成してみたのですが

    見よう見まねで以下のように作成してみたのですが 作動しませんでした。 (当方javascript初心者です) どこに問題があるのか、指摘してくださる方を探しています。 極めて初歩的なところで誤っているのだろうと思いますので 質問するのも恐縮なのですが・・・ どなたかよろしくお願いいたします。 ------------------------------------------ <HTML> <HEAD> <script language="JavaScript"> function calc(){ var a = document.form1.001.value; var b = document.form1.002.value; var c = document.form1.003.value; var d = document.form1.004.value; var total = a + b + c + d; document.form1.field.value = total; } </script> </HEAD> <BODY> <BR><BR> <form name="form1"> <Select name="001"> <Option value="10">case1 <Option value="20">case2 </Select>ケース <BR><BR> <INPUT size="15" type="text" name="002">number <BR><BR> <Select name="003"> <Option value="100">volume1 <Option value="200">volume2 <Option value="300">volume3 </Select>ボリューム <BR><BR> <Select name="004"> <Option value="0">N <Option value="50">size1 <Option value="100">size2 <Option value="150">size3 </Select>サイズ <BR><BR> <INPUT type="button" name="calc" value="計算" onClick="calc()"><BR><BR> <input size="15" readonly="readonly" name="field" type="text">total </form> </BODY> </HTML>

  • PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問

    PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問致します。 1.入力→2.確認→3.実行の3ページを作成しましたが、 2.確認で入力した値が間違っていた場合、1.入力に戻って訂正する仕様です 私は2.確認の戻るボタンにjavaのhistory.back();を使ったのですが ブラウザやOSにより、戻った際にデータが保持されていない場合があるとの事だったので 他の方法がないかご教授下さい。サンプルコードを書いて頂くと助かります。 以下、作成したコード 1.入力画面(mail.html) <html> <body> <form action="chk.php" method="post"> 件名:<br> <input type="text" name="subject" size="30" value=""><br> 送信者名:<br> <input type="text" name="name" size="30" value=""><br> メールアドレス:<br> <input type="text" name="mail" size="30" value=""><br> 本文:<br> <textarea name="message" cols="30" rows="5"></textarea><br> <br> <input type="submit" value="確認する">&nbsp&nbsp<input type="reset" value="クリア"> </form> </body> </html> 2.確認画面(chk.php) <?php $name = $_POST["name"]; $message = $_POST["message"]; $subject = $_POST["subject"]; $mail = $_POST["mail"]; ?> <html> <body> <form action="send.php" method="post"> 件名:<?php echo $subject; ?><br> 送信者名:<?php echo $name; ?><br> メールアドレス:<?php echo $mail; ?><br> 本文:<?php echo $message; ?><br> <input type="submit" value="これでOK"> &nbsp&nbsp //下記の戻るボタンで戻るとデータ保持をするようにしたい。history.back以外で。 <input type="button" value="戻る" onclick="history.back();"> <input type="hidden" name="name" value="<?php echo $name; ?>"> <input type="hidden" name="message" value="<?php echo $message; ?>"> <input type="hidden" name="subject" value="<?php echo $subject; ?>"> <input type="hidden" name="mail" value="<?php echo $mail; ?>"> </form> </body> </html> 3.送信画面(send.php) <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $message = "名前:" . $_POST["name"] . "\n本文:" . $_POST["message"]; if (!mb_send_mail("hoge@example.com", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("メールの送信に失敗しました。"); } ?> <html> <body> <p>メールが送信されました。</p> </body> </html> 初心者ですので、わかりやすい表記をお願い致します。

    • 締切済み
    • PHP
  • 複数のフォームから送信

    複数のフォームからtextの値を送信したいのですができますか?〒番号を入力して検索ボタンをおすと住所がでてきて最後に登録をしたいです。検索だけのプログラムはできてますがフォームを二つにすると両方のsubmitが登録になります・・・ 一応自分でいろいろためしましたがだめでした。。。 html,php,javascriptです。 二つともだめでした。。。。 rei1.php ------------------------- <html> <body <form method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> <br> <form method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> -------------------------------------- rei2.php -------------------------------------- <html> <head> <script language="javascript"><!-- function send() { document.nform.submit(); document.nform2.submit(); document.nform3.submit(); } //--></script> </head> <body> <form name="nform" method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> </form> <form name="nform2" method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> <form name="nform3" method="POST" action="1.php"> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> ------------------------------------

  • HTMLのパスワードページ

    htmlのパスワードを作りましたが画面にあるENTERのボタンを必ず押さなければいけないのですがそれをキーボードのENTERキーにする方法はありませんか? <div> <body bgcolor="#000000"> </div> <div align="center"> <img src="baka2.png" width="350" height="350" alt=""><br><br><br><br> <html> <head> <title>特別課外活動部パスワード入力</title> <script type = "text/javascript"> <!-- function matchPass() { var inpass = document.forms[ "pass" ].elements[ "inpass" ].value; var validpass = "baccano"; if( inpass == validpass ) location.href = "main.html"; else alert( "パスワードが間違っています。登録されてない場合は先に登録してください" ); } </script> <link rel="stylesheet" type="text/css" href="http://st.shinobi.jp/img/tadaima/tdftad.css" /></head> <body> <form name = "pass"> <div> <input type = "password" value = "" name = "inpass"> <input type = "button" value = "ENTER" onclick = "matchPass();"> </div> </form>

専門家に質問してみよう